• 【刷题】【差分约束】intervals


    [ai, bi]区间内 和 点集Z至少有ci个共同元素,

    如果用 Si 表示区间[0,i]区间内至少有多少个元素的话,那么Sbi - Sai >= ci,

    但是有很多点依然没有相连接起来

    0<=Si - Si-1<=1

    1>差分约束

    //条件转化:
    //sum[j]-sum[i-1]>=c[i]
    //sum[i-1] <= sum[j] -c[i]
    //i-1 => j,c[i]
    
    //且 0<= sum[i]-sum[i-1] <=1
    //i => i-1,-1
    //i-1 => i,0 
    
    #include<cstdio>
    #include<cstdlib>
    #include<queue>
    #include<cstring>
    using namespace std;
    inline int read()
    {
        int x=0;char c=getchar();
        while(c<'0' || c>'9') c=getchar();
        while(c>='0'&&c<='9') x=(x<<1)+(x<<3)+c-'0',c=getchar();
        return x;
    }
    int n;
    const int N=5e4+13,M=N*3;
    
    int head[N],tot;
    int v[M],w[M],nx[M];
    void add(int u,int vv,int ww)
    { v[++tot]=vv,w[tot]=ww,nx[tot]=head[u],head[u]=tot; }
    
    int st=N,ed;
    int dis[N];
    bool in[N];
    void SPFA()
    {
        memset(dis,128,sizeof(dis));
        queue <int> q;
        q.push(st),dis[st]=0;
         
        while(!q.empty() )
        {
            int t=q.front() ;q.pop() ;
            
            for(int i=head[t];i;i=nx[i])
            {
                int nx=v[i];
                if(dis[nx]<dis[t]+w[i])
                {
                    dis[nx]=dis[t]+w[i];
                    if(!in[nx]) 
                        in[nx]=true,q.push(nx); 
                }
            }
            in[t]=false;
        }
    }
    
    int main()
    {
        n=read();
        int u,v,w;
        for(int i=1;i<=n;i++)
        {
            u=read(),v=read()+1,w=read();
            add(u,v,w);
            st=min(st,u);
            ed=max(ed,v);
        }
        for(int i=st;i<ed;i++)
            add(i+1,i,-1),add(i,i+1,0);
        
        SPFA();
        printf("%d
    ",dis[ed]);
        
        return 0;
    }
  • 相关阅读:
    病毒软件测试代码
    如何将WIN安全设置重置回默认值
    今天值班非常不爽。
    FTP命令(2)
    WORD操作
    DELPHI事务
    DELPHI一些常用的技巧
    钩子学习心得
    (转 )Delphi指针如何指向使用with开域语句创建的无名组件对象
    WebBrowser 操作记要 (DELPHI)
  • 原文地址:https://www.cnblogs.com/xwww666666/p/11712320.html
Copyright © 2020-2023  润新知