离散化+并查集

set比unique慢好多

unique

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<cmath>
 4 #include<ctime>
 5 #include<cstdlib>
 6 #include<iostream>
 7 #include<algorithm>
 8 #include<set>
 9 #define clr(a,x) memset(a,x,sizeof(a))
10 #define rep(i,l,r) for(int i=l;i<r;i++)
11 using namespace std;
12 int read()
13 {
14     char c=getchar();
15     int ans=0,f=1;
16     while(!isdigit(c)){
17         if(c=='-') f=-1;
18         c=getchar();
19     }
20     while(isdigit(c)){
21         ans=ans*10+c-'0';
22         c=getchar();
23     }
24     return ans*f;
25 }
26 const int maxn=200005;
27 int f[maxn],a[maxn][3],b[maxn][2],c[maxn];
28 int find(int a)
29 {
30     return (f[a]==a?f[a]:f[a]=find(f[a]));
31 }
32 int main()
33 {
34     freopen("prog10.in","r",stdin);
35     freopen("prog10.out","w",stdout);
36     int t=read();
37     while(t--){
38         int n=read(),cnt=0,cnt1=0;
39         bool flag=1;
40         clr(a,0),clr(b,0),clr(c,0);
41         rep(i,0,maxn) f[i]=i;
42         rep(i,0,n){
43             a[i][0]=read();
44             a[i][1]=read();
45             a[i][2]=read();
46             if(!a[i][2]){
47                 b[cnt][0]=a[i][0];
48                 b[cnt++][1]=a[i][1];
49             }
50             c[cnt1++]=a[i][0];
51              c[cnt1++]=a[i][1];
52         }
53         cnt1=unique(c,c+(n<<1))-c;
54         sort(c,c+cnt1);
55         rep(i,0,n){
56             if(a[i][2]==1){
57                 f[find(lower_bound(c,c+cnt1,a[i][0])-c)]=find(lower_bound(c,c+cnt1,a[i][1])-c);
58             }
59         }
60         rep(i,0,cnt){
61             if(find(lower_bound(c,c+cnt1,b[i][0])-c)==find(lower_bound(c,c+cnt1,b[i][1])-c)){
62                 flag=0;break;
63             }
64         }
65         if(flag) printf("YES\n");
66         else printf("NO\n");
67     }
68     return 0;
69 }

View Code

set

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<cmath>
 4 #include<ctime>
 5 #include<cstdlib>
 6 #include<iostream>
 7 #include<algorithm>
 8 #include<set>
 9 #define clr(a,x) memset(a,x,sizeof(a))
10 #define rep(i,l,r) for(int i=l;i<r;i++)
11 using namespace std;
12 int read()
13 {
14     char c=getchar();
15     int ans=0,f=1;
16     while(!isdigit(c)){
17         if(c=='-') f=-1;
18         c=getchar();
19     }
20     while(isdigit(c)){
21         ans=ans*10+c-'0';
22         c=getchar();
23     }
24     return ans*f;
25 }
26 set<int>S;
27 const int maxn=200005;
28 int f[maxn],a[maxn][3],b[maxn][2],c[maxn];
29 int find(int a)
30 {
31     return (f[a]==a?f[a]:f[a]=find(f[a]));
32 }
33 int main()
34 {
35     freopen("prog10.in","r",stdin);
36     freopen("prog10.out","w",stdout);
37     int t=read();
38     while(t--){
39         S.clear();
40         int n=read(),cnt=0,cnt1=0;
41         bool flag=1;
42         clr(a,0),clr(b,0),clr(c,0);
43         rep(i,0,n<<1) f[i]=i;
44         rep(i,0,n){
45             a[i][0]=read();
46             a[i][1]=read();
47             a[i][2]=read();
48             if(!a[i][2]){
49                 b[cnt][0]=a[i][0];
50                 b[cnt++][1]=a[i][1];
51             }
52             if(S.find(a[i][0])==S.end()){
53                 S.insert(a[i][0]);
54                 c[cnt1++]=a[i][0];
55             }
56             if(S.find(a[i][1])==S.end()){
57                 S.insert(a[i][1]);
58                 c[cnt1++]=a[i][1];
59             }
60         }
61         sort(c,c+cnt1);
62         rep(i,0,n){
63             if(a[i][2]==1){
64                 f[find(lower_bound(c,c+cnt1,a[i][0])-c)]=find(lower_bound(c,c+cnt1,a[i][1])-c);
65             }
66         }
67         rep(i,0,cnt){
68             if(find(lower_bound(c,c+cnt1,b[i][0])-c)==find(lower_bound(c,c+cnt1,b[i][1])-c)){
69                 flag=0;break;
70             }
71         }
72         if(flag) printf("YES\n");
73         else printf("NO\n");
74     }
75     return 0;
76 }

View Code

转载于:https://www.cnblogs.com/chensiang/p/4673647.html

bzoj4195 noi2015 day1 t1相关推荐

  1. 2015.7.17( NOI2015 day1 )

    今天早起做了NOI2015网络同步赛.... 最近NOI是越来越向NOIP靠拢了....但是我还是不会做..... 第一题:程序自动分析 先离散化一下..然后最多就剩20w个数 , 不等于就存起来.. ...

  2. NOI2015 Day1 T2 软件包管理器 树链剖分

    NKOJ3423 NOI2015 软件包管理器 时间限制 : 20000 MS 空间限制 : 524288 KB 问题描述 Linux用户和OS X用户一定对软件包管理器不会陌生.通过软件包管理器,你 ...

  3. NOIP 2018模拟赛(模拟) 2018 11 3 A组 Day1 T1

    T1 铃仙的红色之瞳(eyes) 题目描述 为了方便你的预测,铃仙对该符卡进行了改造. 敌方非常强大,可以看作有无限的体力.通过该符卡,铃仙可以释放出子弹,敌方触碰到子弹就会损失一格体力.注意,每次敌 ...

  4. bzoj4195 [Noi2015]程序自动分析

    在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3,-代表程序中出现的变量,给定n个形如xi=xj或xi≠xj的变量相等/不等 ...

  5. NOIP2017 Day1 T1 小凯的疑惑

    题目描述 小凯手中有两种面值的金币,两种面值均为正整数且彼此互素.每种金币小凯都有 无数个.在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的.现在小凯想知道在无法准确支付的物品中,最贵的价 ...

  6. Noip2011 Day1 T1 铺地毯(模拟)

    新的一年重新开始(过水题) 题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n 张地毯,编号从 1 到n .现在将这些地毯 ...

  7. 【NOI2015 Day1】软件包管理器

    问题描述 Linux用户和OS X用户一定对软件包管理器不会陌生.通过软件包管理器,你可以通过一行命令安装某一个软件包,然后软件包管理器会帮助你从软件源下载软件包,同时自动解决所有的依赖(即下载安装这 ...

  8. 雅礼集训 Day1 T1 养花

    这道题的暴力很好写.. 正解也很暴力...(PS:吐槽数据..说好的≤100000却出现了100001) 正解分块. 主要思路是处理出每个块对于每个模数的最大余数.乍一看好想只能(那我优化什么???) ...

  9. 【LOJ NOI Round#2 Day1 T1】单枪匹马【矩阵】

    传送门 支持后面加数,区间进行奇怪的要求操作算值. 你看这个操作是个线性的迭代,这种时候就应该想到线性代数,那就想到矩阵. 你就强行用矩阵表示,然后手玩一下结果矩阵来反推原来的矩阵. 手玩出来每个数的 ...

最新文章

  1. 云南大学信息学院c语言实验七,云南大学软件学院C语言程序
  2. 一份关于kaggle特征构建技巧和心得
  3. 欠拟合、过拟合及其解决方法
  4. 英伟达发布全球唯一千万亿级集成型 AI 工作组服务器
  5. linux鉴于它没有文件拓展名,linux中的文件类型以及查看文件类型的方法
  6. 循环队列的java结构_java数据结构之循环队列(数组实现)
  7. java 画树_java – 如何绘制代表连接节点图的树?
  8. 《python透明人士,他是凭什么成为主流编程的宠儿?!》Python基础
  9. vue ----axios
  10. 数据库 聚合 、分组、筛选、排序、日期等函数的应用
  11. Win7安装 Rational Rose软件
  12. indesign排版标点挤压_indesign排版标点挤压设置技巧
  13. php经纬度转地址高德,高德 地址编码,转为经纬度
  14. 深度linux系统初始化,deepin官方论坛-深度科技官网旗下网站
  15. opencv读取大恒相机
  16. FinalShell密码找回
  17. Golang线程池gpool
  18. 家庭网络理解(家庭版光猫、路由器、交换机)
  19. 嵌入式系统项目设计——基于LED、按键、蜂鸣器的打地鼠游戏(完整代码)
  20. android图片显示的方向问题

热门文章

  1. [CodePlus 2017 11月赛]晨跑 题解(辗转相除法求GCD)
  2. 拖动同级别元素显示辅助线,辅助对齐,吸附.
  3. extjs中store的reload事件异步问题解决
  4. 又一个“众所周知”的DAL层设计BUG
  5. Android之通过VideoView控件播放一个视频出现的问题以及我的解决办法
  6. BigInt:JavaScript 中的任意精度整数
  7. ASP.NET Core 2.1基于SignalR和Vue实时通讯
  8. 如何在支付宝成为增加个人服务器,支付宝支付,服务器如何生成支付订单
  9. java 树形图构建
  10. Android导入第三方静态库.a编译成动态库.so