HDU6129 Just do it
来源:互联网 发布:传奇mac 编辑:程序博客网 时间:2024/06/07 04:10
题目
Just do it
Time Limit: 5000/2500 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Others)Total Submission(s): 1090 Accepted Submission(s): 629
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 integersn,m(1≤n≤2×105,1≤m≤109) .
The second line containsn nonnegative integers a1...n(0≤ai≤230−1) .
For each test case:
The first line contains two positive integers
The second line contains
Output
For each test case:
A single line containsn nonnegative integers, denoting the final sequence.
A single line contains
Sample Input
21 113 31 2 3
Sample Output
11 3 1
题目大意
b[i]=a[1]^a[2]^....^a[i],所有的b[i]更新完之后,b[i]变成新的a[i],重复m次,让我们输出b[i],
动手写一下可以发现是一个杨辉三角,C(m-1,m-1+i) i∈(0,n-1)
第二行开始我直接写的平方数,省略了a1,a2,a3,a4,对应一下就好
拿m=3时的a4举例,C(m-1,m-1+i),从右边开始,i=0,有一个a4,i=1,C(m-1,m-1+1)=C(2,3)=3,三个a3,C(m-1,m-1+2)=C(2,4)=6,6个a2.....
刚开始就想到Lucas,但是超时了,这里有一个结论,(m-1)&(m-1+i)==(m-1),那么这个组合数是奇数,我们异或的也只有奇数。
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=200000+10;int a[maxn];int b[maxn];int main(){ int T; scanf("%d",&T); while(T--) { memset(b,0,sizeof(b)); int n,m; scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) { scanf("%d",&a[i]); } for(int i=0;i<n;i++) { // int t=(m-1)&(m-1+i); // cout<<m-1<<" "<<m-1+i<<" "<<t<<endl; if(((m-1)&(m-1+i))==(m-1))//这里是一种优化,很强大,orz for(int j=i+1;j<=n;j++) { b[j]^=a[j-i]; // cout<<"b["<<j<<"] : "<<b[j]<<" a["<<j-i<<"] : "<<a[j-i]<<endl; } } printf("%d",b[1]); for(int i=2;i<=n;i++) { printf(" %d",b[i]); } printf("\n"); } return 0;}
阅读全文
0 0
- HDU6129-Just do it
- hdu6129 Just do it
- HDU6129 Just do it
- HDU6129-Just do it
- HDU6129 Just do it【规律】
- HDU6129 Just do it (找规律)
- hdu6129 just do it 递推 思维
- HDU6129 Just do it[组合数学]
- Hdu6129 Just do it(2017多校第7场)
- Just do it————(多校第7场 hdu6129)
- HDU6129 Just do it(前缀异或+杨辉三角)
- hdu6129 Just do it 2017多校第七场1010 杨辉三角+规律
- Just do it
- Just do it!
- Just do it!
- Just do it!
- just do it!
- Just do it!
- 什么情况下必须使用C++的初始化列表
- 架构师养成之路(1)--- 58专家解读架构师之路:这些才是架构师成功的标配!
- Convolutional Pose Machines
- CodeForces839A Arya and Bran
- 爬取网站使用代理IP
- HDU6129 Just do it
- FlatList测试
- PinPoint使用教程
- 数据结构实验之查找五:平方之哈希表
- MyBatis入门教程
- Protostuff序列化
- 基于hadoop2.2的namenode与SecondaryNameNode分开配置在不同的计算机
- JAVA中上转型对象的详细解释
- 如何相互转换逗号分隔的字符串和List (Java程序员日记 2015/03/06)