正题

评测记录:https://www.luogu.org/recordnew/lists?uid=52918&pid=P1955


题目大意

给出若干个关系,xi≠xj   or   xi=xjxi≠xjorxi=xjx_i\neq x_j\ \ \ or\ \ \ x_i=x_j,然后求是否全部都满足。


解题思路

首先由于数据较大,所以我们先离散化,然后用并查集。先处理所有等于的关系,然后不等于的再判断。


code

#include<cstdio>
#include<algorithm>
#define N 1000010
using namespace std;
struct node{int x,y,t;
}a[N];
int n,uniq[2*N],f[2*N],t;
bool cmp(node x,node y)
{return x.t>y.t;
}
int find(int x)
{if(f[x]!=x) return f[x]=find(f[x]);return x;
}
int main()
{scanf("%d",&t);for(int ti=1;ti<=t;ti++){scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].t);uniq[i]=a[i].x;uniq[i+n]=a[i].y;}//以上为去重stable_sort(uniq+1,uniq+1+2*n);int m=unique(uniq+1,uniq+1+2*n)-(uniq+1);//以上为离散化for(int i=1;i<=m;i++) f[i]=i;//初始化并查集for(int i=1;i<=n;i++){a[i].x=lower_bound(uniq+1,uniq+1+m,a[i].x)-(uniq+1),a[i].y=lower_bound(uniq+1,uniq+1+m,a[i].y)-(uniq+1);}//以上为找到离散化之后的位置stable_sort(a+1,a+1+n,cmp);bool flag=0;for(int i=1;i<=n&&!flag;i++){int fa=find(a[i].x),fb=find(a[i].y);if(a[i].t) f[min(fa,fb)]=max(fa,fb);//链接else if(fa==fb) printf("NO\n"),flag=true;//判答案}if(!flag) printf("YES\n");}
}

P1955-[NOI2015]程序自动分析【并查集,离散化】相关推荐

  1. 洛谷 P1955 [NOI2015]程序自动分析(沙雕题)

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

  2. P1955 [NOI2015]程序自动分析 离散化学习 lower_bound学习

    题目链接 https://www.luogu.org/problemnew/show/P1955 题目描述 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题 ...

  3. P1955 [NOI2015] 程序自动分析

    解题思路 输入的数据有满足约束和不满足约束,很明显我们能解决的是等于的情况,用并查集直接将相等的两个变量合并起来,并且我们很明显能发现是否满足条件和判断的顺序是无关的,所以我们可以先将相等的变量进行合 ...

  4. bzoj 4195: [Noi2015]程序自动分析

    4195: [Noi2015]程序自动分析 Description 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3,-代表 ...

  5. 【bzoj4195】[Noi2015]程序自动分析 离散化+并查集

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

  6. 【刷题】BZOJ 4195 [Noi2015]程序自动分析

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

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

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

  8. 2019ICPC(徐州) - so easy(并查集+离散化)

    题目链接:点击查看 题目大意:给出一个1~n的序列,然后给出m个操作,每个操作分为下列两种情况: 1 x:让数字x不可用 2 x:查询包括x在内的右侧的第一个可用数字 题目分析:因为n给到了1e9,而 ...

  9. LNSYOJ201小胖的奇偶【并查集+离散化】【做题报告】

    这道题是一个带权并查集 题目描述 huyichen和xuzhenyi在玩一个游戏:他写一个由0和1组成的序列. huyichen选其中的一段(比如第3位到第5位),问他这段里面有奇数个1 还是偶数个1 ...

最新文章

  1. 关闭vmware喇叭报警声
  2. 谷歌如何利用人工智能重塑美国医疗行业?
  3. letswave7中文教程1:软件安装与脑电数据导入
  4. 自然语言处理期末复习(3)-(5)模型与句法分析
  5. mysql join 循环_关于mysql联表的内嵌循环操作nested loop join中on和where执行顺序问题...
  6. 企业靠一套数据平台实现“低成本运营战略”,降低成本600万
  7. css设置元素继承父元素宽度_详解CSS中的百分比的应用
  8. html5仿qq空间,JS实现的仿QQ空间图片弹出效果代码
  9. 手写数字识别 随机森林 代码
  10. html中地图的绘制toolbars,tkinter内嵌Matplotlib系列(二)之函数曲线绘制
  11. 随手小记 才知道[阁楼藏尸|未来闪影]
  12. Bailian2675 计算书费【求和】
  13. 使用R的金融统计:收益、随机行走和模拟
  14. 记忆术: 记数字 (110数字图像编码)
  15. 邮件服务器域名怎么查看,如何查看企业邮箱是哪里的域名
  16. 15天入门Python,每天都该干嘛,规划路线。
  17. Autodesk的免费的CAD软件试用版下载地址
  18. ARM APCS 学习笔记
  19. 【Homeassistant 与Passive Infrared Sensor被动红外传感器握手】
  20. 教育期刊《语文教学通讯》杂志简介及投稿须知

热门文章

  1. ansys fluent udf manual 下载_FLUENT流固耦合柱体结构涡激振动仿真案例解析
  2. 卡屏java_Java drawImage到屏幕上一卡一卡的
  3. 开发板实现645协议C语言,迅为-imx6ull开发板之C语言实现LED例程
  4. linux 用mutex定义一个linkedlist,一个高性能无锁非阻塞链表队列
  5. java ee监听器编程,java EE开发之Servlet第四课:监听器(Listener)
  6. 反射的基本知识(详解)
  7. 7-46 新浪微博热门话题 (30 分)(思路+详解+set + map)pta逐个点过的 来呀兄弟们
  8. 从当前元素继续寻找_云漫圈 | 寻找无序数组的第k大元素
  9. [Redis6]常用数据类型_List列表
  10. [Java基础]自定义注解 格式本质