http://acm.hdu.edu.cn/showproblem.php?pid=6129

题意:

给出数组a,并且bi=a1^a2^a3...^ai,并且现在会重复m次,求出最后的b数组。

思路:

简单的打个表,如果斜着看,可以发现a的系数就是杨辉三角。

这道题目需要知道的就是杨辉三角和组合数的关系,杨辉三角中第n行,m个元素的值就是$C(n-1,m-1)$,这里的话第x次变换时第y项的值就是$C(x+y-2,y-1)$。这样的话,我们就可以方便的计算出各个系数,并且判断一下奇偶,只有奇数才会有贡献。

那么怎么快速计算呢?观察第m行,可以发现:

这样一来先计算第1列的a1,然后后面几列的对应的数也就出来了,然后计算第二列的a1...这样的话就是做到了分块处理,如果系数是偶数,直接剪枝了不少循环,能大大的减少耗时。

像我一开始就有点傻了,先是计算a1对第m行所有的数的贡献,然后计算a2对m行的数的贡献...这样就很TLE了。

 #include <iostream>
#include <cstdio>
#include <cstring>
using namespace std; const int maxn=*1e5+; int n, m;
int a[maxn];
int b[maxn]; int main()
{
//freopen("in.txt","r",stdin);
int T;
scanf("%d",&T);
while(T--)
{
memset(b,,sizeof(b));
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++) scanf("%d",&a[i]); /* //一开始的思路,TLE了
for(int i=1;i<=n;i++)
{
for(int j=i;j<=n;j++)
{
int y=j-i;
int x=j-i+m-1;
if((x&y)==y)
{
b[j]^=a[i];
}
}
}
*/ for(int i=;i<=n;i++)
{
int y=i-;
int x=i+m-;
if((x&y)==y)
{
for(int j=i;j<=n;j++)
b[j]^=a[j-i+];
}
} for(int i=;i<=n;i++)
printf("%d%c",b[i],i==n?'\n':' ');
}
return ;
}

HDU 6129 Just do it(杨辉三角)的更多相关文章

  1. 2014多校第六场 1007 || HDU 4927 Series 1(杨辉三角组合数)

    题目链接 题意 : n个数,每操作一次就变成n-1个数,最后变成一个数,输出这个数,操作是指后一个数减前一个数得到的数写下来. 思路 : 找出几个数,算得时候先不要算出来,用式子代替,例如: 1 2 ...

  2. hdu 2032 一维数组实现杨辉三角

    杨辉三角 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  3. HDU - 5015 233 Matrix(杨辉三角/前缀+矩阵快速幂)

    233 Matrix In our daily life we often use 233 to express our feelings. Actually, we may say 2333, 23 ...

  4. HDU - 6129 :Just do it (杨辉三角)

    There is a nonnegative integer sequence a 1...n  a1...n of length n n . HazelFan wants to do a type ...

  5. HDU 2032 杨辉三角

    http://acm.hdu.edu.cn/showproblem.php?pid=2032 Problem Description 还记得中学时候学过的杨辉三角吗?具体的定义这里不再描述,你可以参考 ...

  6. HDOJ(HDU) 1799 循环多少次?(另类杨辉三角)

    Problem Description 我们知道,在编程中,我们时常需要考虑到时间复杂度,特别是对于循环的部分.例如, 如果代码中出现 for(i=1;i<=n;i++) OP ; 那么做了n次 ...

  7. hdu 5698(杨辉三角的性质+逆元)

    ---恢复内容开始--- 瞬间移动 Accepts: 1018 Submissions: 3620 Time Limit: 4000/2000 MS (Java/Others) Memory Limi ...

  8. HDU 5794 A Simple Chess(杨辉三角+容斥原理+Lucas定理)

    题目链接 A Simple Chess 打表发现这其实是一个杨辉三角…… 然后发现很多格子上方案数都是0 对于那写可能可以到达的点(先不考虑障碍点),我们先叫做有效的点 对于那些障碍,如果不在有效点上 ...

  9. <hdu-2032>杨辉三角

    这是杭电hdu上杨辉三角的链接:http://acm.hdu.edu.cn/showproblem.php?pid=2032  Problem Description: 还记得中学时候学过的杨辉三角吗 ...

随机推荐

  1. MYSQL中的BlackHole引擎

    MYSQL中的BlackHole引擎 http://blog.csdn.net/ylspirit/article/details/7234021 http://blog.chinaunix.net/u ...

  2. jQuery内部原理和实现方式浅析

    这篇文章主要介绍了jQuery内部原理和实现方式浅析,本文试图从整体来阐述一下jQuery的内部实现,需要的朋友可以参考下 这段时间在学习研究jQuery源码,受益于jQuery日益发展强大,研究jQ ...

  3. 什么是anaconda【转载】

    转自:https://zhidao.baidu.com/question/525102108723657245.html https://zhidao.baidu.com/question/62475 ...

  4. HTML <input> 标签的 name 属性

    定义和用法 name 属性规定 input 元素的名称. name 属性用于对提交到服务器后的表单数据进行标识,或者在客户端通过 JavaScript 引用表单数据. 注释:只有设置了 name 属性 ...

  5. [LeetCode] 103. Binary Tree Zigzag Level Order Traversal _ Medium tag: BFS

    Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to ...

  6. python 多线程小练习

    需求:有100个数据,启动5个线程,每个线程分20个数据,怎么把这20个数据分别传给每个线程. 1. 利用多线程实现 import threading nums = list(range(100)) ...

  7. JVM、Java编译器和Java解释器

    作用: JVM:JVM有自己完善的硬件架构,如处理器.堆栈(Stack).寄存器等,还具有相应的指令系统(字节码就是一种指令格式).JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需要生成 ...

  8. zend studio9破解版

    一.下载window http://downloads.zend.com/studio-eclipse/9.0.3/ZendStudio-9.0.3.msi 下载linux64 http://down ...

  9. acrobat pro 无法编辑个别文本

    在修改pdf文档时出现个别文字选取不上,无法修改,如图中4-2626没有选中 解决方法如图 此后可以直接修改文本了

  10. 019-centos的yum用法

    1.检测系统是否已经安装过mysql或其依赖:# yum list installed | grep mysql(当然也可以用 rpm -qa | grep mysql) 2.卸载已经存在的mysql ...