zoukankan      html  css  js  c++  java
  • P1955 [NOI2015]程序自动分析

    题意

    略(这东西应该都能看懂)

    思路

    先排序,把所有e=1的操作放在前面,然后再进行e=0的操作在进行e=1的操作的时候,我们只要把它约束的两个变量放在同一个集合里面即可。再e=0,即存在一条不相等的约束条件,对于它约束的两个变量,如果在一个集合里面,那就不可能满足!如不相等的约束条件都满足,那就YES。

    显然并查集,但是因为数据范围到了 (1e9) 所以我们需要使用离散化(不开也行,也就是会MLE)

    代码

    #include<cstdio>
    #include<iostream>
    #include<algorithm> 
    #include<cstring>
    #include<string>
    #include<cmath>
    #include<cstdlib>
    #define int long long
    
    using namespace std;
    
    int t,n,f[1000007],book[1000007*3];
    
    struct node{
    	int x,y,e;
    }a[1000001];
    bool cmp(node a,node b){
    	return a.e>b.e;
    }
    
    int find(int x){
    	if(x==f[x]) return x;
    	return f[x]=find(f[x]);
    }
    
    signed main(){
    	scanf("%lld",&t);
    	while(t--){
    		int tot=-1;
    		memset(book,0,sizeof(book));
    		memset(a,0,sizeof(a));
    		memset(f,0,sizeof(f));
    		int flag=1;
    		scanf("%lld",&n);
    		for(int i=1;i<=n;i++)
    		{
    			scanf("%lld %lld %lld",&a[i].x,&a[i].y,&a[i].e);
    			book[++tot]=a[i].x;
    			book[++tot]=a[i].y;
    		}
    		sort(book,book+tot);//排序
    		int reu=unique(book,book+tot)-book;//去重
    		for(int i=1;i<=n;++i){
    			a[i].x=lower_bound(book,book+reu,a[i].x)-book;
    			a[i].y=lower_bound(book,book+reu,a[i].y)-book;
    		}
    		for(int i=1;i<=reu;i++) f[i]=i;//初始化
    		sort(a+1,a+n+1,cmp);//按e排序
    		for(int i=1;i<=n;i++){
    			int r1=find(a[i].x);
    			int r2=find(a[i].y);
    			if(a[i].e){
    				f[r1]=r2;
    			}else if(r1==r2){
    				printf("NO
    ");
    				flag=0;
    				break;
    			}
    		}
    		if(flag) printf("YES
    ");
    	}
    	return 0;
    }
    

    [注意初始化 f[i]=i \ 没了 ]

  • 相关阅读:
    pat1038. Recover the Smallest Number (30)
    pat1037. Magic Coupon (25)
    pat1036. Boys vs Girls (25)
    pat1031. Hello World for U (20)
    pat1030. Travel Plan (30)
    pat1028. List Sorting (25)
    pat1027. Colors in Mars (20)
    pat1017. Queueing at Bank (25)
    pat1025. PAT Ranking (25)
    Reverse Linked List II
  • 原文地址:https://www.cnblogs.com/jasony/p/13339549.html
Copyright © 2011-2022 走看看