2017 Multi-University Training Contest
来源:互联网 发布:centos mysql配置文件 编辑:程序博客网 时间:2024/06/07 20:21
转自:http://blog.csdn.net/qq_37412229/article/details/77231474
题目链接
题目意思
给你一个包含n个数的序列A和一个数m,序列B中的数是序列A经过异或得到的,比如:b[i]=a[1]^a[2]^…..^a[i]。现在让你求经过m次异或后,序列B的值。
解题思路
我们写下其前五项的值可以发现我们设定ans【i】【j】表示进行到第i次,第j个位子的答案的话,ans【i】【j】有推导式:
ans【i】【j】=ans【i-1】【j】^ans【i】【j-1】;
- 1
- 1
从图中我们可以看出对于每一项,他的系数就是杨辉三角的值,那么如果当前位子系数为奇数的话,结果就会有贡献。
对于杨辉三角,第x次变换第y项是C(x+y-2,y-1);
C(n,m),如果n&m==m则C(n,m)为奇数,考虑第一项对后面每一项的贡献是奇数还是偶数,依次类推后面的项数产生的贡献情况。
具体情况看代码吧!
代码部分
#include <iostream>#include <string.h>#include <stdio.h>#include <algorithm>using namespace std;int a[2050000];int b[2050000];int main(){ int t; scanf("%d",&t); while(t--) { int n,m; scanf("%d%d",&n,&m); memset(b,0,sizeof(b)); for(int i=1; i<=n; i++) scanf("%d",&a[i]); for(int i=1; i<=n; i++) { int y=i-1; int x=i+m-2; if((x&y)==y)///判断为奇数 { for(int j=i; j<=n; j++) b[j]^=a[j-i+1]; } } for(int i=1; i<=n; i++) { if(i>1) printf(" "); printf("%d",b[i]); } printf("\n"); }}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
阅读全文
0 0
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- #2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- #2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 自学Java编程的入门书单
- 2017年8月25日训练日记
- 面向对象理解
- Xshell : Python实现的简单shell
- Eclipse使用总结
- 2017 Multi-University Training Contest
- Markdown通用模板
- Spring_控制反转(IOC)/依赖注入(DI)
- HDU5890_Eighty seven_排除物品的01背包&&bitset
- esxcfg-*命令集
- VS2015+QT5.7+opencv3.10图像处理
- C++中cstring和int互换
- Java源码分析-ArrayList
- 无线安全之破解WPA/WPA2 加密WiFi