zoukankan      html  css  js  c++  java
  • BZOJ4195-程序自动分析

    根据题意,相等类型的变量应该在同一个集合中,两个变量相等意味着他们能联通。

    可以使用并查集维护这些集合,期初处理相等的变量约束,把相等类型的变量放在同一个集合。

    最后扫描所有不相等的约束条件,如果存在一条不相等的约束,而它的两个变量在同一集合里,那么就是不能被满足的。反之就是可以满足的。

    注意本题的x范围有109,而n只有106,可以用离散化的方式缩小范围。

    代码如下,写得不好看= =

    #include <iostream>
    #include <algorithm>
    using namespace std;
    typedef long long ll;
    
    int fa[1000005],a[2000005],tot,aa,b,c,m,on,ze;
    struct node 
    {
        int a,b;
        node(){}
        node(int _,int __):a(_),b(__){}
    }one[1000005],zero[1000005];
    bool ok;
    int rt(int x){return x==fa[x]?x:fa[x]=rt(fa[x]);}
    int val(int x){return lower_bound(a+1,a+1+m,x)-a;}
    int  main() {
        int t;cin>>t;
        while(t--){
            ok=true;
            tot=on=ze=0;
            for(int i=0;i<=1000000;++i)fa[i]=i;
            int n;cin>>n;
            for(int i=1;i<=n;++i){
                cin>>aa>>b>>c;
                a[++tot]=aa;a[++tot]=b;
                if(c) one[++on]=node(aa,b);
                else zero[++ze]=node(aa,b);
            }
            sort(a+1,a+1+tot);
            m=unique(a+1,a+1+tot)-a-1;
            for(int i=1;i<=on;++i){
                aa=one[i].a;b=one[i].b;
                aa=val(aa);b=val(b);
                int rta=rt(aa),rtb=rt(b);
                if(rta!=rtb)
                    fa[rta]=rtb;
            }
            for(int i=1;i<=ze;++i){
                aa=zero[i].a;b=zero[i].b;
                aa=val(aa);b=val(b);
                int rta=rt(aa),rtb=rt(b);
                if(rta==rtb){
                    ok=false;
                    break;
                }
            }
            if(ok)cout<<"YES"<<endl;
            else cout<<"NO"<<endl;
        }
        return 0;
    }
  • 相关阅读:
    668. Kth Smallest Number in Multiplication Table
    658. Find K Closest Elements
    483. Smallest Good Base
    475. Heaters
    454. 4Sum II
    441. Arranging Coins
    436. Find Right Interval
    410. Split Array Largest Sum
    392. Is Subsequence
    378. Kth Smallest Element in a Sorted Matrix
  • 原文地址:https://www.cnblogs.com/-Chamgin/p/8990835.html
Copyright © 2011-2022 走看看