zoukankan      html  css  js  c++  java
  • Luogu P5331 [SNOI2019]通信

    Link
    KM

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using i64=long long;
    const int N=2007,inf=0x3f3f3f3f;
    int n,a[N],w[N][N],vis[N],A[N],B[N],slack[N],pre[N],mat[N];
    int read(){int x;scanf("%d",&x);return x;}
    void bfs(int x)
    {
        memset(vis+1,0,8*n),memset(pre+1,0,8*n),memset(slack+1,0x3f,8*n),mat[0]=x,x=0;
        do
        {
    	int u=mat[x],d=inf,t;vis[x]=1;
    	for(int v=1;v<=2*n;++v)
    	    if(!vis[v])
    	    {
    		if(slack[v]>A[u]+B[v]-w[u][v]) slack[v]=A[u]+B[v]-w[u][v],pre[v]=x;
    		if(slack[v]<=d) d=slack[v],t=v;
    	    }
    	for(int v=0;v<=2*n;++v) if(vis[v]) A[mat[v]]-=d,B[v]+=d; else slack[v]-=d;
    	x=t;
        }while(mat[x]);
        while(x) mat[x]=mat[pre[x]],x=pre[x];
    }
    int main()
    {
        n=read(),memset(w,-0x3f,sizeof w);int W=read();i64 ans=0;
        for(int i=1;i<=n;++i) a[i]=read(),w[i][i+n]=-W;
        for(int i=1;i<=n;++i) for(int j=1;j<i;++j) w[i][j]=-abs(a[i]-a[j]);
        for(int i=1;i<=n;++i) bfs(i);
        for(int i=1;i<=n*2;++i) if(mat[i]&&mat[i]<=n) ans+=w[mat[i]][i];
        printf("%lld",-ans);
    }
    
  • 相关阅读:
    laravel5.2总结--blade模板
    laravel5.2总结--响应
    laravel5.2总结--请求
    git总结
    laravel5.2总结--路由
    Get与Post的一些总结
    python库安装
    iptables的recent模块
    iptables
    dmucs与distcc
  • 原文地址:https://www.cnblogs.com/cjoierShiina-Mashiro/p/13053461.html
Copyright © 2011-2022 走看看