HDU 6129 Just do it(杨辉三角)
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(杨辉三角)的更多相关文章
- 2014多校第六场 1007 || HDU 4927 Series 1(杨辉三角组合数)
题目链接 题意 : n个数,每操作一次就变成n-1个数,最后变成一个数,输出这个数,操作是指后一个数减前一个数得到的数写下来. 思路 : 找出几个数,算得时候先不要算出来,用式子代替,例如: 1 2 ...
- hdu 2032 一维数组实现杨辉三角
杨辉三角 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- HDU - 5015 233 Matrix(杨辉三角/前缀+矩阵快速幂)
233 Matrix In our daily life we often use 233 to express our feelings. Actually, we may say 2333, 23 ...
- 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 ...
- HDU 2032 杨辉三角
http://acm.hdu.edu.cn/showproblem.php?pid=2032 Problem Description 还记得中学时候学过的杨辉三角吗?具体的定义这里不再描述,你可以参考 ...
- HDOJ(HDU) 1799 循环多少次?(另类杨辉三角)
Problem Description 我们知道,在编程中,我们时常需要考虑到时间复杂度,特别是对于循环的部分.例如, 如果代码中出现 for(i=1;i<=n;i++) OP ; 那么做了n次 ...
- hdu 5698(杨辉三角的性质+逆元)
---恢复内容开始--- 瞬间移动 Accepts: 1018 Submissions: 3620 Time Limit: 4000/2000 MS (Java/Others) Memory Limi ...
- HDU 5794 A Simple Chess(杨辉三角+容斥原理+Lucas定理)
题目链接 A Simple Chess 打表发现这其实是一个杨辉三角…… 然后发现很多格子上方案数都是0 对于那写可能可以到达的点(先不考虑障碍点),我们先叫做有效的点 对于那些障碍,如果不在有效点上 ...
- <hdu-2032>杨辉三角
这是杭电hdu上杨辉三角的链接:http://acm.hdu.edu.cn/showproblem.php?pid=2032 Problem Description: 还记得中学时候学过的杨辉三角吗 ...
随机推荐
- Innodb引擎状态查看
我们的MySQL数据库内的表一般都是Innodb表类型的. mysql>show engine innodb status; (低版本用: show innodb status;) === ...
- Comparable和Comparator的使用
1:对象实现Comparable, 那么对象就具有了比较功能 package comparableAndComparator; import java.util.Collections; import ...
- HTML输入框的默认显示内容
在某些情况下我们会需要在输入框里默认显示一些内容,比如在登录的时候不在输入框前面显示用户名和密码,直接在输入框里显示,这时只要在input的标签里添加属性 placeholder="用户名 ...
- AngularJS 表达式 对象和数组
AngularJS 使用 表达式 把数据绑定到 HTML. AngularJS 表达式 AngularJS 表达式写在双大括号内:{{ expression }}. AngularJS 表达式把数据绑 ...
- NSLog打印NSInteger老是有warning
zSpecifies that a following [...] conversion specifier applies to a size_t or the corresponding sign ...
- http接口自动化测试框架实现
一.测试需求描述 对服务后台一系列的http接口功能测试. 输入:根据接口描述构造不同的参数输入值 输出:XML文件 eg:http://xxx.com/xxx_product/test/conten ...
- iOS 新浪微博-1.0框架搭建
项目搭建 1.新建一个微博的项目,去掉屏幕旋转 2.设置屏幕方向-->只有竖向 3.使用代码构建UI,不使用storyboard 4.配置图标AppIcon和LaunchImage 将微博资料的 ...
- CSS选择器可以用数字开头吗
最好是字母开头,后面用数字可以,直接用数字开头不符合官方规范,虽然浏览器牛逼点也能解析出来,但是最初就不要这么做,坏习惯养成很难改.而且如果团队合作,css的命名都需要有固定的格式,还要有可读性方便他 ...
- JAVA如何调用mysql写的存储过程
存储过程是干什么的,自己百度,百度上讲的比我讲的好.为什么要用存储过程,这样可以提高效率.废话少说,直接上代码: 首先说一下语法:在mysql中写存储过程 DELIMITER $$ CREATE /* ...
- no-siteapp 和 no-transform
简单的说,是禁止转码 . 举个通俗的例子. 你建了一栋房子(网站),百度说我给你做个大门,但是大门上要有我的广告 你不愿意,就建立了一条路叫no-transform 别人去你家走这条路就行了 后来百度 ...