并查集——奇偶性(Parity)
题目描述
输入
输出
输出第一条错误信息的位置-1.
如果没有错误信息,则输出n
样例输入
10 5 1 2 even 3 4 odd 5 6 even 1 6 even 7 10 odd
样例输出
3
- #include<cstdio>
- #include<cstring>
- #include<cmath>
- #include<algorithm>
- using namespace std;
- int abs(int x){return x>=0?x:-x;}
- int a[10001];
- int f[10001],s[10001];
- int m,n,k;
- int find(int x)//找父亲与离父亲的距离,顺便找沿路所有元素与离父亲的距离(看不懂?自己慢慢想)
- {
- if(f[x]==0)return x;
- int xx=find(f[x]);
- s[x]+=s[f[x]];
- s[x]%=2;
- return f[x]=xx;
- }
- int main()
- {
- int i,j;
- scanf("%d%d",&m,&n);
- for(i=1;i<=n;i++)
- {
- char c[11];
- int x,y,r1,r2;
- scanf("%d%d%s",&x,&y,c);
- if(x>m||y>m){printf("%d",i-1);return 0;}
- if(x>y)swap(x,y);
- x--;//半开半闭区间,小的元素减减
- bool p=0,q=0;
- for(j=1;j<=k;j++)//找数组中是否有x和y
- <span style="white-space:pre"> </span>{
- if(a[j]==x&&!p)x=j,p=1;
- if(a[j]==y&&!q)y=j,q=1;
- }
- if(!p)a[++k]=x,x=k;//没有就将其加进去
- if(!q)
- {
- if(x!=y)a[++k]=y,y=k;//这里要注意
- else y=x;
- }
- r1=find(x),r2=find(y);
- if(r1!=r2)
- {
- if(r1>r2)swap(r1,r2);
- f[r2]=r1;
- if(c[0]=='o')s[r2]=abs(s[x]+1-s[y])%2;
- else s[r2]=abs(s[x]-s[y])%2;
- }
- else//验证
- {
- if(c[0]=='o'&&abs(s[x]-s[y])%2!=1){printf("%d",i-1);return 0;}
- if(c[0]=='e'&&abs(s[x]-s[y])%2){printf("%d",i-1);return 0;}
- }
- }
- printf("%d",n);
- }
并查集——奇偶性(Parity)相关推荐
- 【转】并查集MST题集
转自:http://blog.csdn.net/shahdza/article/details/7779230 [HDU] 1213 How Many Tables 基础并查集★ 1272 小希的迷宫 ...
- P5937 [CEOI1999]Parity Game-扩展域并查集与离散化处理
题目链接[CEOI1999]Parity Game - 洛谷 单调队列优化多重背包(全网最详细解析)_秦三马和他的CF生涯的博客-CSDN博客 考察内容,扩展域并查集,本题中把奇偶性相同归为一个集合, ...
- Ural_1003 Parity(并查集)
/*发现并查集的应用太巧妙了...大体思路:从题中可以看出来如果(i, j)是even的话,sum(i-1) 和 sum(j)的奇偶性相同.(i, j)如果是odd的话则其奇偶行不同.定义奇偶性为朋友 ...
- Parity(带权值的并查集)
你的朋友写下一串包含1和0的串让你猜,你可以从中选择一个连续的子串(例如其中的第3到第5个数字)问他,该子串中包含了奇数个还是偶数个1,他会回答你的问题,然后你可以继续提问......你怀疑朋友的答案 ...
- [POJ1733]Parity game(并查集 + 离散化)
传送门 题意:有一个长度已知的01串,给出[l,r]这个区间中的1是奇数个还是偶数个,给出一系列语句问前几个是正确的 思路:如果我们知道[1,2][3,4][5,6]区间的信息,我们可以求出[1,6] ...
- 【无码专区9】序列统计(带权并查集 + 前缀和建边 + dp)
因为只有std,没有自我实现,所以是无码专区 主要是为了训练思维能力 solution才是dls正解,但是因为只有潦草几句,所以大部分会有我自己基于正解上面的算法实现过程,可能选择的算法跟std中dl ...
- 我知道并查集的可爱之处
请开始您的并查集之旅 迈入门槛 文字概念 故事配图辅助理解 浅尝辄止 畅通工程 程序自动分析 supermarket 慢慢深入 银河英雄传说 parity game 1.带权并查集 2.扩展域并查集 ...
- 牛客题单——同余、并查集
题单链接 Strange Way to Express Integers(表示整数的奇怪方式) 这道题之前已经写过了,不重复写了,下面是链接 中国剩余定理 程序自动分析 这道题很明显是用并查集解决的 ...
- 并查集算法总结专题训练
并查集算法总结&专题训练 1.概述 2.模板 3.例题 1.入门题: 2.与别的算法结合: 3.考思维的题: 4.二维转一维: 5.扩展域并查集&边带权并查集: 4.总结 1.概述 并 ...
最新文章
- curl命令具体解释
- FAT AP和FIT AP 区别 (无线篇)
- 【springboot】静态资源设置缓存时间
- git clone 多个_如何通过Git参与项目开发
- havc是什么意思_avc是什么意?eduis里h.264/a – 手机爱问
- 高薪Java开发工程师需要掌握哪些技能?
- Ubuntu命令整理
- Unity 3D 游戏引擎
- 学弟学妹看我文章顺利毕业,基于HTML+Javascript五子棋人机博弈系统设计与实现《记得收藏》
- 6 个清除 Linux 终端的命令
- 自定义vscode插件路径及离线安装VSIX说明
- 古罗马帝国莱茵河-多瑙河防线之谜
- Java 移除List中的元素,这玩意讲究!
- 软件开发的能力体系及锻炼
- 刘强东怼天猫,是在陈述事实还是另有深意?
- 如何使用(免费软件)Microsoft ICE轻松扫描大图片
- 计算机屏幕节省电,【火腿课堂】当FT8/FT4数字模式遇上电脑“屏幕保护程序或省电模式”时...
- 打印样式CSS的技巧浅谈
- 【文件上传绕过】——解析漏洞_IIS7.0 | IIS7.5 | Nginx的解析漏洞
- 商业汇票、银行本票、支票的区别