洛谷P1955 程序自动分析 [NOI2015] 并查集
正解:并查集+离散化
解题报告:
其实题目还挺水的,,,但我太傻逼了直接想挂了,,,所以感觉还是有个小坑点所以还是写个题解记录下我的傻逼QAQ
首先这题一看,就长得很像NOIp关押罪犯?然后就噼里啪啦打一个并查集上去,再随便离散化一下,就能获得90pts的好成绩,,,(因为数据太水了QAQ
然后考虑为什么不能用那题的套路?仔细思考下,用并查集的条件是什么?
——可传递性
简单来说,比如已知x=y,y=z,则必有x=z,所以这里可以用个并查集把他们缩成一块对趴
但这儿不光有x=y的条件,还有x≠y的条件鸭,显然x≠y,y≠z不能推出x≠z,所以显然不相等关系是不需要并查集维护的,就直接先把相等的做掉最后判一下不相等的是否相等就好
顺便说下,那为什么之前做关押罪犯的时候我们就要把不相等也维护了?因为那题只有两个阵营,所以可以得到不相等关系的关系
最后留个思考题,,,
这题是留一堆条件问能否达成嘛
那如果改成,每给一个条件都问能否达成,不能达成就跳过,怎么做?
umm自行思考趴QAQ其实并不难来着QAQ(解法在这儿,,,然而你们都不知道密码鸭嘻嘻嘻
最后放下代码
对了这题要离散化这个点我好像忘了说了,,,算了挺显然的我就$cue$下昂QAQ
over!
#include<bits/stdc++.h>
using namespace std;
#define il inline
#define gc getchar()
#define t(i) edge[i].to
#define mp make_pair
#define ri register int
#define rb register bool
#define rc register char
#define lb(x) lower_bound(st+1,st+st_cnt,x)-st
#define rp(i,x,y) for(ri i=x;i<=y;++i)
#define my(i,x,y) for(ri i=x;i>=y;--i)
#define e(i,x) for(ri i=head[x];i;i=edge[i].nxt) const int N=1e6+;
int n,m,fa[N],st[N<<],st_cnt;
struct op{int l,r;bool typ;}ope[N]; il int read()
{
rc ch=gc;ri x=;rb y=;
while(ch!='-' && (ch<'' || ch>''))ch=gc;
if(ch=='-')ch=gc,y=;
while(ch>='' && ch<='')x=(x<<)+(x<<)+(ch^''),ch=gc;
return y?x:-x;
}
int fd(ri x){return fa[x]==x?x:fa[x]=fd(fa[x]);}
il bool cmp(op gd,op gs){return gd.typ>gs.typ;} int main()
{
freopen("1955.in","r",stdin);freopen("1955.out","w",stdout);
int T=read();
while(T--)
{
n=read();st_cnt=;
rp(i,,n)ope[i]=(op){st[++st_cnt]=read()+,st[++st_cnt]=read()+,read()};
sort(st+,st++st_cnt);st_cnt=unique(st+,st++st_cnt)-st-;rp(i,,st_cnt)fa[i]=i;
sort(ope+,ope++n,cmp);rp(i,,n)ope[i].l=lb(ope[i].l),ope[i].r=lb(ope[i].r);
rp(i,,n)
{
if(ope[i].typ){ri fa1=fd(ope[i].l),fa2=fd(ope[i].r);fa[fa1]=fa2;}
else{ri fa1=fd(ope[i].l),fa2=fd(ope[i].r);if(fa1==fa2)printf("NO\n"),i=n+;}
if(i==n)printf("YES\n");
}
}
return ;
}
这儿是代码QAQ
洛谷P1955 程序自动分析 [NOI2015] 并查集的更多相关文章
- NOI2015 洛谷P1955 程序自动分析(并查集+离散化)
这可能是我目前做过的最简单的一道noi题目了...... 先对e=1的处理,用并查集:再对e=0查询,如果这两个在同一集合中,则为""NO",最后都满足的话输出" ...
- codevs4600 [NOI2015]程序自动分析==洛谷P1955 程序自动分析
4600 [NOI2015]程序自动分析 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 在实现 ...
- 洛谷 P1955 程序自动分析
题目描述 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3...代表程序中出现的变量,给定n个形如xi=xj或xi≠xj的变 ...
- 【BZOJ4195】【NOI2015】程序自动分析(并查集)
[BZOJ4195][NOI2015]程序自动分析(并查集) 题面 Description 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设 ...
- [NOI2015]程序自动分析(并查集)
题目描述 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3...代表程序中出现的变量,给定n个形如xi=xj或xi≠xj的变 ...
- 【bzoj4195】[Noi2015]程序自动分析 离散化+并查集
题目描述 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3,…代表程序中出现的变量,给定n个形如xi=xj或xi≠xj的变量 ...
- 【luoguP1955 】[NOI2015]程序自动分析--普通并查集
题目描述 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3...代表程序中出现的变量,给定n个形如xi=xj或xi≠xj的变 ...
- [NOI2015]程序自动分析(并查集,离散化)
[NOI2015]程序自动分析 Description 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3,-代表程序中出现的 ...
- 洛谷 [P1995] 程序自动分析
并查集+ 离散化 首先本题的数据范围很大,需要离散化, STL离散化代码: //dat是原数据,id是编号,sub是数据的副本 sort(sub + 1, sub + tot + 1); size = ...
随机推荐
- 提一下InfoQ
昨天在微信读书中整理了一个"架构师"清单,把InfoQ中文社区这两年发布的电子书整理到了一起,分享给了团队成员. 如果你去研究InfoQ中文社区,就会发现其中一个人与之因缘际会的相 ...
- svn常见错误解决
Svn冲突导致锁住的解决方案:错误码:svn: E155037: Previous operation has not finished; run 'cleanup' if it was interr ...
- 网络协议TCP/IP、IPX/SPX、NETBEUI简介
网络中不同的工作站,服务器之间能传输数据,源于协议的存在.随着网络的发展,不同的开发商开发了不同的通信方式.为了使通信成功可靠,网络中的所有主机都必须使用同一语言,不能带有方言.因而必须开发严格的标准 ...
- azkaban在centos下的部署安装
azkaban 是一个用Java开发的开源调度工具workflow. 下面介绍具体安装过程,我这里使用的版本是3.43.0,使用的是solo运行模式. 编译 git clone https://git ...
- 手动添加jar包到本地maven仓库(已测)ok
很多时候我们需要的jar包在maven仓库上没有 我们可以自己找到这个jar包,但是怎么通过在pom文件配置使用呢? 需要我们手动将本地的jar包添加到本地maven仓库. 前提是已经配置好maven ...
- ABBYY OCR技术教电脑阅读缅甸语(上)
缅甸联邦共和国,原名缅甸,是东南亚的一个国家,从1962年到2010年,缅甸一直被政变后上台的军政府统治,直至最近5年它才对外界开放,与其他国家建立了贸易与文化联系. 缅甸语由很多方言组成,但所有方言 ...
- 【本周面试题】第1周 - 获取URL中的查询字符串参数、get和post的区别
[此系列优先解决自己经历的面试题] 2018.11.16 面试题一:你如何获取浏览器URL中查询字符串中的参数? 题目代码: 测试地址为 https://www.sogou.com/tx?query= ...
- css---计算页面的的宽度和长度
我们在写前端页面的时候,会遇到这样的情况,就是一个div设置宽度100%,设置左右边距10像素,这样的布局,在里面嵌套的div的宽度设置100%,这样写的话,里面的宽度是和外面的宽度一致的,同样是10 ...
- 解决css设置背景透明,文字不透明
设置元素的透明度: -moz-opacity:0.8; /*在Firefox中设置元素透明度 filter: alpha(opacity=80); /*ie使用滤镜设置透明 但是当我们对一个标 ...
- @ControllerAdvice注解的使用
package com.vcredit.ddcash.monitor.controller; import com.vcredit.ddcash.monitor.model.dto.Response; ...