奇偶游戏(边带权

# 题意

首先,小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满足第1~k个回答,但不满足第1~k+1个回答。

# 题解

区间奇偶行问题首先考虑前缀和

给定s[l~r]的关系即给定了前缀和中的sum[l-1]和sum[r]的关系

1)s[l~r]中有偶数个1,即sum[l-1]和sum[r]的奇偶性相同

2)s[l~r]中有奇数个1,即sum[l-1]和sum[r]的奇偶性不同

传递关系不止一种,

1)x1和x2奇偶性相同,x2和x3也相同,那么x1和x3也相同

2)x1和x2奇偶性相同,x2和x3不同,那么x1和x3不同

3)x1和x2不同,x2和x3不同,x1和x3相同

序列的长度很大,M问题很少,离散化为一个较小的区间。

维护一个相对关系,d数组,d[x]为 0 表示x与根的奇偶性质相同,1 表示不同,

任意两个点如

猜你喜欢

转载自www.cnblogs.com/hhyx/p/12443926.html