hdu 6129 Just do it (找规律)
来源:互联网 发布:作业做不来用什么软件 编辑:程序博客网 时间:2024/06/10 11:28
题目意思
转自: 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】;
从图中我们可以看出对于每一项,他的系数就是杨辉三角的值,那么如果当前位子系数为奇数的话,结果就会有贡献。
对于杨辉三角,第x次变换第y项是C(x+y-2,y-1);
C(n,m),如果n&m==m则C(n,m)为奇数,考虑第一项对后面每一项的贡献是奇数还是偶数,依次类推后面的项数产生的贡献情况。
具体情况看代码吧!
还有这个知识点 转:http://blog.csdn.net/millky/article/details/3206730
最直观的方法就是计算一下,然后看它的奇偶性;但是这个时间以及数据范围上都不允许;
另外一种方法就是,对于给定C(n,m),检查n中2因子的个数与m和(n-m)中2因子个数和的关系,假设n!中2因子个数为a,m!中2因子个数为b,(n-m)!中2因子个数为c,则显然有a>=(b+c);并且当a==b+c时,一定为奇,否则为偶。题意转化为求a和b+c。求一个阶乘中含有的素因子i的个数的方法可以参见Knuth的具体数学,方法是显而易见的。但是有的时候,这种方法仍然太慢(比如TOJ的一道题目,要判断5000000次),更快的方法是什么呢?
方法三:由方法2可以很容易地看出,n!中含有2因子的个数等于(n-它的二进制形式中1的个数)(每除一次如果有1的话去掉一个1)。那么题意再次转化为求m,n-m以及n的二进制形式中1的个数。或者说,看n&m ?= m,这个呢,如果等于,那么也就意味着,所有m中为1的位置n一定为1,那么n-m就可以直接用二进制减,这样得到的差的二进制中1的个数加上m中二进制1的位数正好等于n中1的位数,由前面可以知道,这就是一个奇数。
#include <iostream>#include <string.h>#include <stdio.h>#include <algorithm>using namespace std;const int N = 2e5+100;int a[N],b[N];int main(){ int t; scanf("%d",&t); while(t--) { int n,m; scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) scanf("%d",&a[i]); memset(b,0,sizeof(b)); 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]; } } } int f=0; for(int i=1;i<=n;i++) { if(f) printf(" "); printf("%d",b[i] ); f=1; } printf("\n"); } return 0;}
- hdu 6129 Just do it(找规律)
- hdu 6129 Just do it (找规律)
- HDU Just do it (找规律暴力)
- HDU 6129 Just do it(找规律+杨辉三角)
- HDU6129 Just do it (找规律)
- HDU 6129 Just do it(规律)
- hdu 6129 Just do it -规律
- Hdu 6129 Just do it【杨辉三角、规律】
- hdu 6129 Just do it (规律递推)
- hdu Just do it 组合数规律
- (hdu 6129)Just do it(数位异或/规律)
- HDU 6129 Just do it(多校7, 组合数 规律)
- Just do it(HDU 6129)
- HDU 6129 Just do it(机智)
- HDU 6129 Just do it
- HDU 6129 Just do it
- HDU 6129 Just do it
- HDU 6129Just do it
- sleep和wait区别总结
- HDU 2686 Matrix && HDU 3376 Matrix Again(最大费用)
- 关系型数据库知识小结
- Android应用层(网络编程)四(okHttp使用解析)
- 运算符优先级
- hdu 6129 Just do it (找规律)
- EasyUI 动态添加tab
- 2010noip提高组 机器翻译 (水题)
- 洛谷 1396 营救
- HDU 1069 Monkey and Banana——DP
- Python合并DataFrame
- less基础知识
- 新特性总结-JDK1.5
- 【工具巧用】用vim ab/iab定制化个人输入习惯,简化命令,快速输入