题目链接[CEOI1999]Parity Game - 洛谷

单调队列优化多重背包(全网最详细解析)_秦三马和他的CF生涯的博客-CSDN博客

考察内容,扩展域并查集,本题中把奇偶性相同归为一个集合,否则归为其敌人集合

f[i] f[i+n] 分别代表和i奇偶性相同与不同的集合,如果奇偶性相同,必须满足,不在彼此敌人集合里,如果奇偶性不同,必须保证双方不在统一集合内,并且双方敌人不在统一集合内;

如果满足,进行合并

另外数据过大,采用离散化处理,大小仅代表了这是第几个数。

Alice 和 Bob 在玩一个游戏:他写一个由 00 和 11 组成的序列。Alice 选其中的一段(比如第 33 位到第 55 位),问他这段里面有奇数个 11 还是偶数个 11。Bob 回答你的问题,然后 Alice 继续问。Alice 要检查 Bob 的答案,指出在 Bob 的第几个回答一定有问题。有问题的意思就是存在一个 0101 序列满足这个回答前的所有回答,而且不存在序列满足这个回答前的所有回答及这个回答。

输入格式

第 11 行一个整数 nn,是这个 0101 序列的长度。

第 22 行一个整数 mm,是问题和答案的个数。

第 33 行开始是问题和答案,每行先有两个整数,表示你询问的段的开始位置和结束位置。然后是 Bob 的回答。odd表示有奇数个 11,even 表示有偶数个 11。

输出格式

输出一行,一个数 xx,表示存在一个 0101 序列满足第 11 到第 xx 个回答,但是不存在序列满足第 11 到第 x+1x+1 个回答。如果所有回答都没问题,你就输出所有回答的个数。

输入输出样例

输入 #1复制

10
5
1 2 even
3 4 odd
5 6 even
1 6 even
7 10 odd

输出 #1复制

3

说明/提示

对于 100\%100% 的数据,1 \le n \leq 10^91≤n≤109,m \leq 5 \times 10^3m≤5×103。

# include<iostream>
# include<algorithm>
using namespace std;
int lisan[5000*2+10];
int f[5000*4+10];
typedef struct
{int left,right;bool flag;}xinxi;
xinxi s[5000+10];
int len=1;int getf(int x)
{if(x==f[x])return x;else{f[x]=getf(f[x]);return f[x];}
}
int main ()
{int n;cin>>n;for(int i=0;i<=5000*4+10;i++){f[i]=i;}int m;cin>>m;for(int i=1;i<=m;i++){cin>>s[i].left>>s[i].right;s[i].left--;string t;cin>>t;if(t[0]=='e')s[i].flag=1;lisan[len]=s[i].left;len++;lisan[len]=s[i].right;len++;}sort(lisan+1,lisan+len);int pos=unique(lisan+1,lisan+len)-lisan;for(int i=1;i<=m;i++){int left=lower_bound(lisan+1,lisan+pos,s[i].left)-lisan;int right=lower_bound(lisan+1,lisan+pos,s[i].right)-lisan;int lf=getf(left);int dlf=getf(left+pos+1);int rf=getf(right);int drf=getf(right+pos+1);if(s[i].flag)//奇偶性相同{if(lf==drf||rf==dlf){cout<<i-1;return 0;}else{f[lf]=rf;f[drf]=dlf;}}else{if(lf==rf||dlf==drf){cout<<i-1;return 0;}else{f[lf]=drf;f[rf]=dlf;}}}cout<<m;return 0;}

P5937 [CEOI1999]Parity Game-扩展域并查集与离散化处理相关推荐

  1. 并查集 ---- 扩展域并查集判二分图 + 循环模拟字典树 The 2020 ICPC Asia Macau Regional Contest C. Club Assignment (详解)

    题目链接 题目大意: 有n个数,现在要把他们拆分成两个集合,假设S为集合,有如下定义: f(S)={min(x⊕y)∣x,y∈S,andx!=y}f(S)=\{min(x\oplus y)|x,y\i ...

  2. P2024 [NOI2001]食物链[扩展域并查集]

    题目来源:洛谷 题目描述 动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形.A 吃 B,B 吃 C,C 吃 A. 现有 N 个动物,以 1 - N 编号.每个动物都是 A,B,C ...

  3. 食物链(扩展域并查集)

    题目描述 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形. A吃B, B吃C,C吃A. 现有N个动物,以1-N编号. 每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种 ...

  4. 关押罪犯 扩展域并查集

    题目描述 SS S城现有两座监狱,一共关押着NN N名罪犯,编号分别为1−N1-N1−N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用" ...

  5. P1525 关押罪犯(扩展域并查集/二分图)

    洛谷题目链接 输入 4 6 1 4 2534 2 3 3512 1 2 28351 1 3 6618 2 4 1805 3 4 12884 输出 3512 1.并查集 有意思的一道并查集的题,需要一些 ...

  6. [POJ1733]Parity game(并查集 + 离散化)

    传送门 题意:有一个长度已知的01串,给出[l,r]这个区间中的1是奇数个还是偶数个,给出一系列语句问前几个是正确的 思路:如果我们知道[1,2][3,4][5,6]区间的信息,我们可以求出[1,6] ...

  7. Parity Game(并查集)

    总时间限制: 10000ms 单个测试点时间限制: 1000ms 内存限制: 65536kB 描述 Now and then you play the following game with your ...

  8. AcWing 258. 石头剪子布(扩展域并查集)

    N个小朋友(编号为0,1,2,-,N-1)一起玩石头剪子布游戏. 其中一人为裁判,其余的人被分为三个组(有可能有一些组是空的),第一个组的小朋友只能出石头,第二个组的小朋友只能出剪子,第三个组的小朋友 ...

  9. 【原创】并查集之扩展域与边带权

    [前言] 并查集是一种可以动态维护若干个不重叠的集合,并支持合并于查询的数据结构. 并查集的基本概念很简单,但是这样一种思想的用途十分广泛. 个人理解:这是一种很巧妙的,可以很好的处理对象之间关系的数 ...

最新文章

  1. 时间为什么用 12 进制?
  2. 咋样路linux分区,linux下磁盘分区方法详解
  3. SAP Cloud for Customer跨component的跳转
  4. jooq 分页排序_将jOOQ与Spring结合使用:排序和分页
  5. 前端笔记-webpack加载前端资源(图片,css等)
  6. springboot完成进度条_Springboot从0开始第一周
  7. 1.LeetCode字符编辑距离
  8. 网上收集总结一下mssql( 部分)
  9. 29.3 用户模式构造
  10. 操作 神通数据库_国产神通数据库教程
  11. VS2015 社区版本 打包程序 发布
  12. 股票 - - 常用指标【上】
  13. RTSP流媒体播放器实现
  14. js正则只能输入大于0的正整数
  15. 使用经典的基本播放命令和 MML 创建 MIDI 文件
  16. 京东app后台多端融合架构代码重构实战
  17. Java学习系列之抽象类和接口的区别和联系
  18. Docker基础介绍(二)
  19. 公有iot私有iot架构_玩洋葱Omega IoT设备在OLED屏幕上显示实时血糖
  20. 克里金插值详细步骤_openlayers4 入门开发系列之前端动态渲染克里金插值 kriging 篇(附源码下载)...

热门文章

  1. C语言四种方法求最大公约数
  2. $.serializeArray读取不到form中的值
  3. Unity PureMVC框架案例
  4. WAMP and WordPress Install on AWS Free Tier Windows 2012 R2
  5. 一个比较高效的素数判断算法
  6. 杰理之麦克风(混响)无法调数字音量解决方法【篇】
  7. pomelo分布式聊天服务器详解
  8. 看很多人要求目录树,我的代码可以满足大多数要求 作  者: flyxxxxx (灭神)
  9. 买个云服务器有啥用_买了一台云服务器可以干嘛
  10. 解决:Invalid character found in method name. HTTP method names must be tokens