程序自动分析 [Bzoj 4195,Noi 2015]
来源:互联网 发布:域名认证查询 编辑:程序博客网 时间:2024/04/27 11:51
题目地址请点击——
程序自动分析
Description
在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足。
考虑一个约束满足问题的简化版本:
假设
例如,一个问题中的约束条件为:
现在给出一些约束满足问题,请分别对它们进行判定。
Input
输入文件的第
注意这些问题之间是相互独立的。
对于每个问题,包含若干行:
第
接下来
Output
输出文件包括
输出文件的第
Sample Input
2
2
1 2 1
1 2 0
2
1 2 1
2 1 1
Sample Output
NO
YES
Hint
在第一个问题中,约束条件为:
这两个约束条件互相矛盾,因此不可被同时满足。
在第二个问题中,约束条件为:
这两个约束条件是等价的,可以被同时满足。
Solution
这个题目就是一个简单的并查集。
只不过因为变量太大,导致数组开不下。
因为
使这个数组有序,那么就可以用二分查找来查找每个变量。
Code
#include <iostream>#include <cstdio>#include <algorithm>using namespace std;int T,n,cnt,tot;int to[1000010][3];int in[2000010];int data[2000010];int fa[2000010];int find(int x){ int tmp=x,pre; while(tmp!=fa[tmp])tmp=fa[tmp]; while(x!=tmp){ pre=fa[x]; fa[x]=tmp; x=pre; } return tmp;}void add(int x,int y){ fa[x]=y;}int search(int l,int r,int q){ while(l<=r){ int mid=(l+r)>>1; if(data[mid]==q)return mid; if(data[mid]<q)l=mid+1; else r=mid-1; }}int main(){ scanf("%d",&T); while(T--){ cnt=tot=0; scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d%d%d",&to[i][1],&to[i][2],&to[i][0]); in[++cnt]=to[i][1]; in[++cnt]=to[i][2]; } sort(in+1,in+cnt+1); for(int i=1;i<=cnt;i++)if(in[i]!=in[i-1])data[++tot]=in[i]; for(int i=1;i<=tot;i++)fa[i]=i; bool flag=true; for(int i=1;i<=n;i++)if(to[i][0]){ int pos1=search(1,tot,to[i][1]),pos2=search(1,tot,to[i][2]); int fa=find(pos1),fb=find(pos2); add(fa,fb); } for(int i=1;i<=n;i++)if(!to[i][0]){ int pos1=search(1,tot,to[i][1]),pos2=search(1,tot,to[i][2]); int fa=find(pos1),fb=find(pos2); if(fa==fb){ printf("NO\n"); flag=false; break; } } if(flag)printf("YES\n"); } return 0;}
- 程序自动分析 [Bzoj 4195,Noi 2015]
- BZOJ 4195 -- NOI(P?) 2015 程序自动分析
- 【并查集】【NOI 2015】【bzoj 4195】程序自动分析
- NOI 2015 程序自动分析
- NOI 2015 程序自动分析
- noi 2015 程序自动分析
- NOI 2015 程序自动分析
- NOI 2015 程序自动分析
- BZOJ 4195 程序自动分析
- BZOJ 4195 [Noi2015] 程序自动分析
- BZOJ 4195 [Noi2015]程序自动分析
- NOI 2015 DAY1 T1 程序自动分析 并查集+离散化
- BZOJ 4195 && NOI 2015 并查集
- bzoj 4195: [Noi2015]程序自动分析 hash+并查集
- BZOJ 4195 & UOJ 127 [Noi2015]程序自动分析
- BZOJ 4195: [Noi2015]程序自动分析 哈希表 并查集
- BZOJ 4195 [Noi2015]程序自动分析 并查集
- BZOJ-4195 NOI2015Day1T1 程序自动分析 并查集+离散化
- 电影《小萝莉的猴神大叔》
- HTML5学习之路(1)
- 手机开发实战177——NUCLEUS介绍1
- 删除单链表指定元素
- php_函数_函数调用过程及原理理解
- 程序自动分析 [Bzoj 4195,Noi 2015]
- Linux下切换capslock和control键
- Java编译时异常和运行时异常
- 手机开发实战178——NUCLEUS介绍2
- MySQL5.7安装过程以及参数和设置说明
- 手机开发实战179——ARM知识介绍
- 那些可能被你忽略的MySQL优化技巧
- Python中的数字运算及相关转换
- C++智能指针