离散化+带权并查集 题意:长度为n的0和1组成的字符串,然后问第L和R位置之间有奇数个1还是偶数个1. 根据这些回答, 判断第几个是错误(和之前有矛盾)的. 思路:此题同HDU 3038 差不多,询问L~R之间的1的奇偶性,相当于HDU 3038 的L~R之间的和.所以合并的时候,合并L-1和R(L-1为父亲). 则R相对L-1的权值(不包括L-1)即为L~R之间1的个数(0代表有偶数个1,1代表有奇数个1). 之所以为什么合并的是L-1和R,举个例子: 1 2 even 3 4 odd 首先合…
Parity Game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 12853   Accepted: 4957 题目链接:http://poj.org/problem?id=1733 Description: Now and then you play the following game with your friend. Your friend writes down a sequence consisting…
POJ1733 Parity game Description Now and then you play the following game with your friend. Your friend writes down a sequence consisting of zeroes and ones. You choose a continuous subsequence (for example the subsequence from the third to the fifth…
题面 Poj 题解 反正只要你判断是否满足区间的奇偶性,假设每一位要么是\(1\)要么是\(0\)好了. 假设有\(S\)的前缀和为\(sum[]\),则有: 若\(S[l...r]\)中有奇数个\(1\),则\(sum[l-1]\)与\(sum[r]\)不同奇偶:反之,则同奇偶 用一个带权并查集维护,设权值数组\(s[i]\)表示区间\([root[i]...i]\)的和的奇偶性. 对于一个区间\([l,r]\),分情况讨论: 如果\(root[l]=root[r]\),直接判断就行了. 否则…
http://poj.org/problem?id=1733 题目描述 你和你的朋友玩一个游戏.你的朋友写下来一连串的0或者1.你选择一个连续的子序列然后问他,这个子序列包含1的个数是奇数还是偶数.你的朋友回答完你的问题,接着你问下一个问题. 你怀疑你朋友的一些答案可能是错误的,你决定写一个程序来帮忙.程序将接受一系列你的问题及你朋友的回答,程序的目的是找到第一个错误的回答i,也就是存在一个序列满足前i-1个问题的答案,但是不满足前i个问题. 输入 第一行有一个整数L(L<=1000000000…
题目链接:http://poj.org/problem?id=1733 题目大意:有一个很长很长含有01的字符串,长度可达1000000000,首先告诉你字符串的长度n,再给一个m,表示给你m条信息,接下来的m行每行包含x,y,even/odd,表示区间[x,y]中1的个数,even为偶数,odd为奇数.判断前几条是对的,也就是说假设k+1条信息与前面相互矛盾,就输出k,说明前k条正确. 例:Sample Input 1051 2 even3 4 odd5 6 even1 6 even7 10…
<题目链接> 题目大意: 一个由0,1组成的序列,每次给出一段区间的奇偶,问哪一条信息不合法. 解题分析: 我们用s[i]表示前i个数的前缀和,那么a b even意味着s[b]和s[a-1]的奇偶性相同.a b odd意味着s[b]与s[a-1]的奇偶性不同.于是我们根据奇偶性的不同,用并查集依次处理他们之间的关系.当某条信息出现与并查集中记录的信息不符合时,则此信息不合法. 由于该序列的长度达到了1e9,并且查询次数只有5000次,所以我们需要对查询的区间进行离散化,否则存不下. #inc…
小A和小B在玩一个游戏. 首先,小A写了一个由0和1组成的序列S,长度为N. 然后,小B向小A提出了M个问题. 在每个问题中,小B指定两个数 l 和 r,小A回答 S[l~r] 中有奇数个1还是偶数个1. 机智的小B发现小A有可能在撒谎. 例如,小A曾经回答过 S[1~3] 中有奇数个1, S[4~6] 中有偶数个1,现在又回答 S[1~6] 中有偶数个1,显然这是自相矛盾的. 请你帮助小B检查这M个答案,并指出在至少多少个回答之后可以确定小A一定在撒谎. 即求出一个最小的k,使得01序列S满足…
题目链接  //kuangbin 题意: 现在你和你的朋友正在玩一种游戏. 你的朋友写下一串0和1的序列,然后你选择其中一串子序列(如[3,5])并且问他这个序列是包含奇数个1还是偶数个1(和是奇数还是偶数). 你可以问你的朋友任意个问题,而你的朋友会回答你的问题. 你的任务是猜出整个朋友的序列.但是,你发现你的朋友告诉你的信息可能有误,所以你想写一个程序来指出他的错误.这个程序应该接受一系列你的问题和答案.程序的目标是找到第一个错误的答案. 思路: 由之前做树状数组的题目经验得到,左区间可以-…
题目链接:http://poj.org/problem?id=1733 题目大意:给你m条信息,每条信息告诉你区间l~r的1的个数是奇数还是偶数,如果后面出现信息跟前面矛盾则这条信息是错误的,问在第一条错误信息之前的正确信息数. 解题思路:对于l~r之间的1的个数的奇偶性,其实可以理解成r比l-1多的1的个数的奇偶,这样刚好可以跟前面一段区间连起来.分两个种类,奇数1,偶数0,同样满足0->1>0的关系像食物链一样.跟How Many Answers Are Wrong差不多. 代码: #in…