-
G - Extreme XOR Sum
UVALive - 7639 - 题意:对一个长度为n的序列 相邻两个不断进行^,直到序列长度为1
- 思路:由于^的性质,一个数本身^奇数次还是本身,偶数则次为0,然后 设序列内的数为 a1,a2,a3,a4......
- 发现最终结果每个位置上的数贡献的次数恰好为 二项式展开的系数。
- 预处理出各个长度(1-1e4)的情况下里面有哪些位置对最终答案贡献了奇数次,那些位置对最终答案贡献了偶数次。
-
#include<bits/stdc++.h> using namespace std; #define maxn 12345 vector<int>init[maxn]; int t,n,q,b,c,a[maxn]; int wait[maxn],len,ans; int main() { wait[1]=1; init[1].push_back(1); for(int i=1; i<=1e4; i++) { wait[i+1]=1; for(int j=i; j>1; j--) wait[j]=(wait[j-1]+wait[j])%2; for(int j=1; j<=i+1; j++) if(wait[j]%2) init[i+1].push_back(j); } scanf("%d",&t); for(int pp=1; pp<=t; pp++) { scanf("%d",&n); for(int i=1; i<=n; i++) scanf("%d",&a[i]); printf("Case %d:\n",pp); scanf("%d",&q); while(q--) { scanf("%d%d",&b,&c); b++,c++; len=c-b+1; ans=0; for(int i=0; i<init[len].size(); i++) ans^=a[init[len][i]-1+b]; printf("%d\n",ans); } } return 0; }
G - Extreme XOR Sum UVALive - 7639 -异或性质
最新推荐文章于 2019-10-17 11:16:34 发布