NOI2015 洛谷P1955 程序自动分析(并查集+离散化)
这可能是我目前做过的最简单的一道noi题目了......
先对e=1的处理,用并查集;再对e=0查询,如果这两个在同一集合中,则为“”NO“,最后都满足的话输出”“YES”;
数值很大,用一下离散化就行了。
1 #include<bits/stdc++.h>
2 using namespace std;
3 const int N=1e6+10;
4 int t,n,fa[N],b[N*3];
5 struct node{
6 int x,y,e;
7 }a[N];
8 bool cmp(node a,node b){//e=1的放在前面
9 return a.e>b.e;
10 }
11 int get(int x){
12 return fa[x]==x?fa[x]:fa[x]=get(fa[x]);
13 }
14 int main(){
15 scanf("%d",&t);
16 while(t--){
17 int tot=0;
18 memset(b,0,sizeof(b));
19 memset(a,0,sizeof(a));
20 memset(fa,0,sizeof(fa));
21 int vis=1;
22 scanf("%d",&n);
23 for(int i=1;i<=n;i++){
24 scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].e);
25 b[++tot]=a[i].x;b[++tot]=a[i].y;
26 }
27 sort(b+1,b+tot+1);
28 int cnt=unique(b+1,b+tot+1)-b-1;
29 for(int i=1;i<=n;i++){
30 a[i].x=lower_bound(b+1,b+cnt+1,a[i].x)-b;
31 a[i].y=lower_bound(b+1,b+cnt+1,a[i].y)-b;
32 }
33 for(int i=1;i<=cnt;i++) fa[i]=i;
34 sort(a+1,a+n+1,cmp);
35 for(int i=1;i<=n;i++){
36 int r1=get(a[i].x);
37 int r2=get(a[i].y);
38 if(a[i].e){
39 fa[r1]=r2;
40 }
41 else if(r1==r2){
42 cout<<"NO"<<endl;
43 vis=0;
44 break;
45 }
46 }
47 if(vis) cout<<"YES"<<endl;
48 }
49 }
NOI2015 洛谷P1955 程序自动分析(并查集+离散化)的更多相关文章
- 洛谷P1955 程序自动分析 [NOI2015] 并查集
正解:并查集+离散化 解题报告: 传送门! 其实题目还挺水的,,,但我太傻逼了直接想挂了,,,所以感觉还是有个小坑点所以还是写个题解记录下我的傻逼QAQ 首先这题一看,就长得很像NOIp关押罪犯?然后 ...
- 洛谷 P1955 程序自动分析
题目描述 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3...代表程序中出现的变量,给定n个形如xi=xj或xi≠xj的变 ...
- codevs4600 [NOI2015]程序自动分析==洛谷P1955 程序自动分析
4600 [NOI2015]程序自动分析 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 在实现 ...
- BZOJ 4195: [Noi2015]程序自动分析 并查集+离散化
LUOGU 1955BZOJ 4195 题目描述 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3...代表程序中出现的变量 ...
- BZOJ 4195: [Noi2015]程序自动分析 并查集 + 离散化 + 水题
TM 读错题了...... 我还以为是要动态询问呢,结果是统一处理完了再询问...... 幼儿园题,不解释. Code: #include<bits/stdc++.h> #define m ...
- BZOJ 4195: [Noi2015]程序自动分析 [并查集 离散化 | 种类并查集WA]
题意: 给出若干相等和不等关系,判断是否可行 woc NOI考这么傻逼的题飞快打了一个种类并查集交上了然后爆零... 发现相等和不等看错了异或一下再叫woc90分 然后发现md$a \neq b, a ...
- BZOJ-4195 NOI2015Day1T1 程序自动分析 并查集+离散化
总的来说,这道题水的有点莫名奇妙,不过还好一次轻松A 4195: [Noi2015]程序自动分析 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 836 ...
- 洛谷 [P1995] 程序自动分析
并查集+ 离散化 首先本题的数据范围很大,需要离散化, STL离散化代码: //dat是原数据,id是编号,sub是数据的副本 sort(sub + 1, sub + tot + 1); size = ...
- [Bzoj4195] [NOI2015] 程序自动分析 [并查集,哈希,map] 题解
用并查集+离散化,注意:并查集数组大小不是n而是n*2 #include <iostream> #include <algorithm> #include <cstdio ...
随机推荐
- 5.1SpringBoot整合Kafka(工具安装Kafka+Tools)
1.工具安装Kafka 上一期我分享了安装zk,下一次我们把Kafka和可视化工具一起搞起来. 注意:这个时候ZK一定要启动成功. zk安装地址:https://www.cnblogs.com/dao ...
- SqlServer获取当前日期的详细写法
SqlServer获取当前日期1. 获取当前日期 select GETDATE()格式化: select CONVERT(varchar,GETDATE(),120) --2018-04-23 14: ...
- C# 从补码中获取有符号数的实际数值
C# 从补码中获取有符号数的实际数值 原理 计算机存储数据时,默认是存储数据的补码.有符号的数粗存在符号位(最高位). 这里就会提到原码.反码.补码的概念. 原码:用符号位和数值表示带符号数,正数的符 ...
- pat甲级考试+pat1051+1056
同上一篇博客: 贪心题目我已经刷了将近30道了,由于那几天考驾照就没写,以后有空的时候补过来吧,都在codeblock里 pat的题也刷了点,acwing 的题也刷了点,基本都攒下了.以后也会慢慢补过 ...
- powershell 执行策略
前言 上一篇博文,我介绍了一下powershell和cmd的对比.通过学习,我发现powershell的确比cmd更加power,也更加适应现在的使用场景. 那么本文将继续介绍一个powershell ...
- MybatisPlus核心功能——实现CRUD增删改查操作 (包含条件构造器)
CRUD 官方文档:https://baomidou.com/ (建议多看看官方文档,每种功能里面都有讲解)[本文章使用的mybatisplus版本为3.5.2] 条件构造器 一般都是用service ...
- C++ 文件hash值 BT种子的hash值
这个两个东东,是我在网上找到的.小小的修改了一下方便大家使用. 一个是 获取文件哈希值的,另外一个是获取torrent文件磁力链接的哈希值. 整理好的类下载地址: 文件hash值: http://pa ...
- npm 和 maven 使用 Nexus3 私服 | 前后端一起学
前文<Docker 搭建 Nexus3 私服 >介绍了在 docker 环境下安装 nexus3 以及 nexus3 的基本操作和管理,本文分别介绍 npm(前端)和 maven(后端)如 ...
- 如何修改SAO用户密码
KingbaseES SAO 用户是专门用于审计管理的用户,用户配置审计策略需要使用该用户.在initdb 完成后,SAO 用户的默认密码保存在参数 sysaudit.audit_table_pas ...
- Go编译过程
一. Go编译流程 二.过程说明 1. 词法解析 读取Go源文件,将字符序列转换为符号(token)序列,比如将":="转换为_Define 代码中的标识符.关键字.运算符和分隔符 ...