P1955 [NOI2015]程序自动分析[离散化+并查集]
一看就是离散化,先去满足相等的条件,相等即为两点联通,或者说在同一个集合内。再看不相等,只有两元素在同一集合才不满足。裸的disjoint-set直接上,常数巨大什么的不管啦。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
#define dbg(x) cerr<<#x<<" = "<<x<<endl
#define ddbg(x,y) cerr<<#x<<" = "<<x<<" "<<#y<<" = "<<y<<endl
using namespace std;
typedef long long ll;
template<typename T>inline char MIN(T&A,T B){return A>B?A=B,:;}
template<typename T>inline char MAX(T&A,T B){return A<B?A=B,:;}
template<typename T>inline T _min(T A,T B){return A<B?A:B;}
template<typename T>inline T _max(T A,T B){return A>B?A:B;}
template<typename T>inline T read(T&x){
x=;int f=;char c;while(!isdigit(c=getchar()))if(c=='-')f=;
while(isdigit(c))x=x*+(c&),c=getchar();return f?x=-x:x;
}
const int N=+;
struct Remilia_Scarlet{
int x,y,d;
inline bool operator <(const Remilia_Scarlet&A)const{
return d>A.d;
}
}q[N];
int A[N<<],fa[N<<];
int T,n,m,fx,fy,flag;
inline int Get(int x){return fa[x]^x?fa[x]=Get(fa[x]):x;} int main(){//freopen("test.in","r",stdin);//freopen("test.out","w",stdout);
read(T);while(T--){
read(n);m=;flag=;
for(register int i=;i<=n;++i)A[++m]=read(q[i].x),A[++m]=read(q[i].y),read(q[i].d);
sort(A+,A+m+);m=unique(A+,A+m+)-A-;sort(q+,q+n+);
for(register int i=;i<=m;++i)fa[i]=i;
for(register int i=;i<=n;++i){
if(q[i].d){
fx=Get(lower_bound(A+,A+m+,q[i].x)-A),fy=Get(lower_bound(A+,A+m+,q[i].y)-A);
if(fx^fy)fa[fx]=fy;//ddbg(fx,fy);
}
else{
fx=Get(lower_bound(A+,A+m+,q[i].x)-A),fy=Get(lower_bound(A+,A+m+,q[i].y)-A);
if(fx^fy)continue;
flag=;break;
}
}
flag?printf("NO\n"):printf("YES\n");
}
return ;
}
P1955 [NOI2015]程序自动分析[离散化+并查集]的更多相关文章
- 【bzoj4195】[Noi2015]程序自动分析 离散化+并查集
题目描述 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3,…代表程序中出现的变量,给定n个形如xi=xj或xi≠xj的变量 ...
- [NOI2015]程序自动分析(并查集,离散化)
[NOI2015]程序自动分析 Description 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3,-代表程序中出现的 ...
- [NOI2015]程序自动分析(并查集)
题目描述 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3...代表程序中出现的变量,给定n个形如xi=xj或xi≠xj的变 ...
- 【luoguP1955 】[NOI2015]程序自动分析--普通并查集
题目描述 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3...代表程序中出现的变量,给定n个形如xi=xj或xi≠xj的变 ...
- bzoj 4195: [Noi2015]程序自动分析【并查集】
等于有传递性,所以hash一下把等于用并查集连起来,然后再判断不等于是否合法即可 #include<iostream> #include<cstdio> #include< ...
- 【BZOJ4195】【NOI2015】程序自动分析(并查集)
[BZOJ4195][NOI2015]程序自动分析(并查集) 题面 Description 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设 ...
- 洛谷 P1955 [NOI2015]程序自动分析 题解
每日一题 day22 打卡 Analysis 离散化+并查集 先离散化所有的约束条件,再处理所有e=1的条件,将i的祖先和j的祖先合并到一个集合中:e=0时,如果i的祖先与j的祖先在同一个集合中,说明 ...
- 洛谷P1955 [NOI2015] 程序自动分析 [并查集,离散化]
题目传送门 题目描述 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3...代表程序中出现的变量,给定n个形如xi=xj或x ...
- NOI2015 洛谷P1955 程序自动分析(并查集+离散化)
这可能是我目前做过的最简单的一道noi题目了...... 先对e=1的处理,用并查集:再对e=0查询,如果这两个在同一集合中,则为""NO",最后都满足的话输出" ...
随机推荐
- Lua数据库访问
© 版权声明:本文为博主原创文章,转载请注明出处 1.代码 luasql = require "luasql.mysql" --创建环境对象 env = luasql.mysql( ...
- Linux系统rootpassword改动
重新启动系统. 进入系统引导界面: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzMzOTg1MQ==/font/5a6L5L2T/fontsi ...
- inflate, findViewById与setContentView的差别与联系
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentV ...
- flash插件使用外部数据的方法
使用xml保存需要改变的数据,如轮播图的图片路径,也可以在xml中指定数据库地址等
- 简单手机端头部设置 及css代码
<html> <head> <title>今日报表</title> <meta http-equiv="Content-Type&quo ...
- GIT客户端的使用【原创】
这次分享的方式,采用的是视频的形式,视频是本人录制. 在做项目使用SVN的时候经常有各种错误出现,所以萌发使用git的想法.在学习git的过程中发现一个神器就是分支,虽然在SVN里也有分支,但由于机制 ...
- css选择器参考手册
选择器 例子 例子描述 CSS .class .intro 选择 class="intro" 的所有元素. 1 #id #firstname 选择 id="firstna ...
- Android:实现两个Activity相互切换而都不走onCreate()
本文要实现的目的是: 有3个Activity: A,B,C.从A中能够进入B,B中能够进入C.而且B和C之间可能须要多次相互切换,因此不能使用普通的startActivity-finish方式,由于又 ...
- 华为基于策略划分VLAN的配置方法及示例
学过思科交换机的朋友,可能对基于策略划分VLAN的配置方法印象非常深,感觉确实比较复杂,先要配置VMPS以及VMPS数据库,但在华为交换机中,这种现象得到了彻底改变,因为它有了一种特殊的端口类型—— ...
- Hadoop常见异常及其解决方式
1.Shell$ExitCodeException 现象:执行hadoop job时出现例如以下异常: 14/07/09 14:42:50 INFO mapreduce.Job: Task Id : ...