并查集——奇偶性(Parity)
来源:互联网 发布:网络平台合作推广方案 编辑:程序博客网 时间:2024/05/22 03:05
题目描述
•有一个01序列,长度<=1000000000,现在有n条信息,每条信息的形式是-a b even/odd。表示第a位到第b位元素之间的元素总和是偶数/奇数。
•你的任务是对于这些给定的信息,输出第一个不正确的信息所在位置-1。信息的数目不超过5000。
•如果信息全部正确,即可以找到一个满足要求的01序列,那么输出n。
输入
•输入文件
•第一行一个整数m表示01序列的长度,第二行一个整数n表示信息的数目。
•接下来是n条信息
输出
输出第一条错误信息的位置-1.
如果没有错误信息,则输出n
样例输入
1051 2 even3 4 odd5 6 even1 6 even7 10 odd
样例输出
3
这道题可以用并查集的思路做
将第三行数据的1 2看做半开半闭区间( 0 , 2 ]中的所有整数元素,他们的和是偶数,可将0当做2的父亲,他们之间的距离为0(偶数mod2的余数)
以此类推,如果为奇数,则他们之间的距离为1
那么,输入x和y,找到他们各自的父亲g和h,如果g不等于h,则无需验证,将g作为h的父亲,其距离计算公式为:
s[ h ]=( s[ x ] + m - s[ y ] )%2
其中m为x到y的和的奇偶性(看不懂就慢慢想)
如果,g等于h,则进行验证,看看abs( s[ x ] - s[ y ] )%2是否满足此语句的奇偶性
整体思路到位
接下来,由于输入的x和y最大为十亿,无法开出这么大的数组,则必须将其理想化
由于只有5000条语句,所以元素最多只有10000个,则用数组将输入的x和y装进去,要验证的时候直接数组里面找,将其在数组中的编号代替其本身进行运算
还不明白?看代码吧:
1 0
- 并查集——奇偶性(Parity)
- 【并查集】Parity
- vijos奇偶性(并查集)
- POJ1733 parity game(并查集)
- Ural 1003 Parity(并查集)
- Parity game 并查集
- Parity game(代权并查集(区间))
- poj1733 & Ural 1003 Parity Game (hash+并查集 )
- poj 1733 Parity game (并查集+向量偏移)
- POJ 1733 parity game (hash离散+并查集)
- POJ - 1733 Parity game (带权并查集)
- Poj 1733 Parity Game(离散化+并查集)
- poj 1733 Parity game(种类并查集)
- CEOI 1999 Parity game (并查集+离散化)
- poj 1733 Parity game(带权并查集)
- poj-1703(并查集) Parity game
- 51nod 1204 Parity(并查集)
- POJ 1733 Parity game——并查集 + 离散化
- 数据库设计第六章简答题
- DOM操作
- 目标跟踪算法三:Modeling and Propagating CNNs in a Tree Structure for Visual Tracking (VOT2016冠军)
- iOS 中三种定时器的用法NSTimer、CADisplayLink、GCD
- String、StringBuffer及StringBuilder的异同
- 并查集——奇偶性(Parity)
- WinForm嵌入Chrome内核浏览器
- jquey获取页面中所有被选中的checkbox和radio的值,并保存为以逗号隔开的字符串
- Centos 安装 mysql5.1
- 九度OJ-1036:Old Bill
- [BZOJ2716][天使玩偶angel][CDQ分治]
- C++ sscanf函数
- Tensorflow基本使用
- C#中的静态方法和静态变量的一些总结