hdu 6129 Just do it(递推)
2017-08-15 19:48
344 查看
Just do it
Time Limit: 5000/2500 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Others)Total Submission(s): 155 Accepted Submission(s): 79
Problem Description
There is a nonnegative integer sequence a1...n of
length n.
HazelFan wants to do a type of transformation called prefix-XOR, which means a1...n changes
into b1...n,
where bi equals
to the XOR value of a1,...,ai.
He will repeat it for m times,
please tell him the final sequence.
Input
The first line contains a positive integer T(1≤T≤5),
denoting the number of test cases.
For each test case:
The first line contains two positive integers n,m(1≤n≤2×105,1≤m≤109).
The second line contains n nonnegative
integers a1...n(0≤ai≤230−1).
Output
For each test case:
A single line contains n nonnegative
integers, denoting the final sequence.
Sample Input
2
1 1
1
3 3
1 2 3
Sample Output
1
1 3 1
把每次变换的系数记录下来后可以发现是个杨辉三角,就拿第一个数字在每次变换后对后面的异或次数举例
1 0 0 0 0
1 1 1 1 1
1 2 3 4 5
1 3 6 10 15
斜着看,可以发现这是个杨辉三角 第x次变换第y项是C(x+y-2,y-1);这是第一个数在第x次变换后对第y项的异或次数,后面的数可以依次类比
因为是杨辉三角,所以第一个数对第2个数如果是奇数次异或,那么第二个数对第三个数也是奇数次异或,后面的情况同理
利用 C(n,m),如果n&m==m则C(n,m)来快速判断奇偶异或次数
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <map> #include <queue> using namespace std; typedef long long ll; const int N = 2e6+10, inf = 0x3f3f3f3f; int a , b ; 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]); //b[i]=a[i]; } for(int i=1;i<=n;i++) { int nn=m+i-2,mm=i-1; if((nn&mm)==mm) { for(int j=i;j<=n;j++) b[j]^=a[j-i+1]; } } for(int i=1;i<=n;i++) printf("%d%c",b[i],i==n?'\n':' '); } return 0; }
相关文章推荐
- hdu 6129 Just do it(递推)
- hdu 6129 Just do it(递推)
- hdu 6129 Just do it(递推)
- hdu 6129 Just do it(递推)
- hdu 6129 Just do it(递推)
- 2017多校联合第七场1010/hdu 6129 Just do it(递推/杨辉三角)
- hdu 6129 Just do it(递推)
- 【(好题)组合数+Lucas定理+公式递推(lowbit+滚动数组)+打表找规律】2017多校训练七 HDU 6129 Just do it
- hdu 6129 Just do it(递推)
- hdu 6129 Just do it(递推)
- hdu 6129 Just do it(递推)
- hdu 6129 Just do it(递推)
- HDU 6129 Just do it(递推)
- hdu 6129 Just do it(递推)
- hdu 6129 Just do it(递推)
- hdu 6129 Just do it(递推)
- hdu 6129 Just do it(递推)
- hdu 6129 Just do it (规律递推)
- hdu 6129 Just do it(递推)
- HDU 6129 Just do it