您的位置:首页 > 其它

hdu 6129 Just do it(找规律)

2017-08-15 22:21 465 查看
转载请注明出处,谢谢http://blog.csdn.net/bigtiao097?viewmode=contents

题意

给长度为n(1≤n≤2×105)的序列a,对其做m(1≤m≤109)次以下操作

第m次操作后,数组第i个元素为第m-1次操作得到的数组的前i个元素的xor值

思路

找规律题 ,,,自己写一写每个元素对最后序列的贡献,可以发现杨辉三角的影子

感觉代码的理论复杂度有点高,但是还能过!

具体代码如下:

Result:Accepted Memory: 3232K Time : 1248MS

#include<bits/stdc++.h>
const int maxn = 2e5+5;
using namespace std;
int n,m;
int a[maxn];
int b[maxn];
int T;
int nn;
int main()
{
scanf("%d",&T);
while(T--)
{
memset(b,0,sizeof b);
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
for(int i=0;i<n;i++)
{
nn = m+i-1;
if((nn&i)==i)
for(int j=i+1;j<=n;j++)
b[j]^=a[j-i];
}
for(int i=1;i<=n;i++)
printf("%d%c",b[i],i==n?'\n':' ');
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: