奇偶游戏
题目链接 题意:有一个01串S,长度为n,一个人说出k个关于01串的回答,描述S[l~r] 中有奇数个1还是偶数个1。依次看,判断他到第几个问题都是可靠的回答。 思路:首先n很大要离散化,然后因为很容易想到如果S[l,r]为奇数,则S[1,r]为偶数,S[1,l-1]为奇数,或者S[1,r]为奇数,S[1,l-1]为偶数。如果S[l,r]为偶数,则 那两个区间奇偶性相同。所以可以用扩展域,扩展每个[1,x]的奇数和偶数两种情况,然后并查集。 #include<cstring> #include<algorithm> #include<vector> #include<map> #include<queue> #include<cstdio> #include<cmath> #define ll long long using namespace std; struct point { int l; int r; int ans; }query[10010]; int a[20010],fa[20010],n,m,t; void read_discrete() { scanf("%d%d",&n,&m); for(int i=1;i<=m;i++) { char str[5]; scanf("%d%d%s",&query[i].l,&query[i].r,str); query[i]