bzoj4195 noi2015 day1 t1
离散化+并查集
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相关推荐
- 2015.7.17( NOI2015 day1 )
今天早起做了NOI2015网络同步赛.... 最近NOI是越来越向NOIP靠拢了....但是我还是不会做..... 第一题:程序自动分析 先离散化一下..然后最多就剩20w个数 , 不等于就存起来.. ...
- NOI2015 Day1 T2 软件包管理器 树链剖分
NKOJ3423 NOI2015 软件包管理器 时间限制 : 20000 MS 空间限制 : 524288 KB 问题描述 Linux用户和OS X用户一定对软件包管理器不会陌生.通过软件包管理器,你 ...
- NOIP 2018模拟赛(模拟) 2018 11 3 A组 Day1 T1
T1 铃仙的红色之瞳(eyes) 题目描述 为了方便你的预测,铃仙对该符卡进行了改造. 敌方非常强大,可以看作有无限的体力.通过该符卡,铃仙可以释放出子弹,敌方触碰到子弹就会损失一格体力.注意,每次敌 ...
- bzoj4195 [Noi2015]程序自动分析
在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3,-代表程序中出现的变量,给定n个形如xi=xj或xi≠xj的变量相等/不等 ...
- NOIP2017 Day1 T1 小凯的疑惑
题目描述 小凯手中有两种面值的金币,两种面值均为正整数且彼此互素.每种金币小凯都有 无数个.在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的.现在小凯想知道在无法准确支付的物品中,最贵的价 ...
- Noip2011 Day1 T1 铺地毯(模拟)
新的一年重新开始(过水题) 题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n 张地毯,编号从 1 到n .现在将这些地毯 ...
- 【NOI2015 Day1】软件包管理器
问题描述 Linux用户和OS X用户一定对软件包管理器不会陌生.通过软件包管理器,你可以通过一行命令安装某一个软件包,然后软件包管理器会帮助你从软件源下载软件包,同时自动解决所有的依赖(即下载安装这 ...
- 雅礼集训 Day1 T1 养花
这道题的暴力很好写.. 正解也很暴力...(PS:吐槽数据..说好的≤100000却出现了100001) 正解分块. 主要思路是处理出每个块对于每个模数的最大余数.乍一看好想只能(那我优化什么???) ...
- 【LOJ NOI Round#2 Day1 T1】单枪匹马【矩阵】
传送门 支持后面加数,区间进行奇怪的要求操作算值. 你看这个操作是个线性的迭代,这种时候就应该想到线性代数,那就想到矩阵. 你就强行用矩阵表示,然后手玩一下结果矩阵来反推原来的矩阵. 手玩出来每个数的 ...
最新文章
- 云南大学信息学院c语言实验七,云南大学软件学院C语言程序
- 一份关于kaggle特征构建技巧和心得
- 欠拟合、过拟合及其解决方法
- 英伟达发布全球唯一千万亿级集成型 AI 工作组服务器
- linux鉴于它没有文件拓展名,linux中的文件类型以及查看文件类型的方法
- 循环队列的java结构_java数据结构之循环队列(数组实现)
- java 画树_java – 如何绘制代表连接节点图的树?
- 《python透明人士,他是凭什么成为主流编程的宠儿?!》Python基础
- vue ----axios
- 数据库 聚合 、分组、筛选、排序、日期等函数的应用
- Win7安装 Rational Rose软件
- indesign排版标点挤压_indesign排版标点挤压设置技巧
- php经纬度转地址高德,高德 地址编码,转为经纬度
- 深度linux系统初始化,deepin官方论坛-深度科技官网旗下网站
- opencv读取大恒相机
- FinalShell密码找回
- Golang线程池gpool
- 家庭网络理解(家庭版光猫、路由器、交换机)
- 嵌入式系统项目设计——基于LED、按键、蜂鸣器的打地鼠游戏(完整代码)
- android图片显示的方向问题
热门文章
- [CodePlus 2017 11月赛]晨跑 题解(辗转相除法求GCD)
- 拖动同级别元素显示辅助线,辅助对齐,吸附.
- extjs中store的reload事件异步问题解决
- 又一个“众所周知”的DAL层设计BUG
- Android之通过VideoView控件播放一个视频出现的问题以及我的解决办法
- BigInt:JavaScript 中的任意精度整数
- ASP.NET Core 2.1基于SignalR和Vue实时通讯
- 如何在支付宝成为增加个人服务器,支付宝支付,服务器如何生成支付订单
- java 树形图构建
- Android导入第三方静态库.a编译成动态库.so