HDU 5673 Robot【卡特兰数】
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=5673
题意:
有一个机器人位于坐标原点上。每秒钟机器人都可以向右移到一个单位距离,或者在原地不动。如果机器人的当前位置在原点右侧,它同样可以向左移动单位距离。一系列的移动(左移,右移,原地不动)定义为一个路径。问有多少种不同的路径,使得n秒后机器人仍然位于坐标原点?答案可能很大,只需输出答案对1,000,000,007取模。
分析:
最终回到原点说明向左和向右走的步数相同,假设一共走了i步,那么左右各走了i/2步,剩下n−i步则原地等待。
因为只有在原点右边的时候才能向左走,也就是说在走的过程中右边的步数必须大于等于左边的步数,这样我们只需要对于不同的i(i<=n/2)求出其卡特兰数即可。
代码:
#include<cstdio>
#include<iostream>
using namespace std;
typedef long long ll ;
const int maxn = 1000000 + 5, mod = 1e9 + 7;
ll f[maxn], rf[maxn], inv[maxn];
inline ll C(int n, int m)
{
if(m < 0||n < m)return 0;
return f[n] * rf[m] % mod * rf[n - m] % mod;
}
void init()
{
f[0] = f[1] = rf[0] = rf[1] = inv[0] = inv[1] = 1;
for(int i = 2; i < maxn; i++){
f[i] = f[i - 1] * i % mod;
inv[i] = inv[mod % i] *(mod - mod / i) % mod;
rf[i] = rf[i - 1] * inv[i] % mod;
}
}
int main (void)
{
int T;scanf("%d", &T);
init();
while(T--){
int n;
scanf("%d", &n);
ll ans = 0;
for(int i = 0; i <= n / 2; i++){
ans += (C(2 * i, i) - C(2 * i, i - 1) + mod )* C(n, 2 * i) % mod;
ans %= mod;
}
printf("%I64d\n", ans % mod);
}
return 0;
}
HDU 5673 Robot【卡特兰数】的更多相关文章
- hdu 5673 Robot 卡特兰数+逆元
Robot Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Problem D ...
- HDU 5673 Robot ——(卡特兰数)
先推荐一个关于卡特兰数的博客:http://blog.csdn.net/hackbuteer1/article/details/7450250. 卡特兰数一个应用就是,卡特兰数的第n项表示,现在进栈和 ...
- hdu5673 Robot 卡特兰数+组合数学+线性筛逆元
Robot Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Subm ...
- hdu5673 Robot 卡特兰数 / 默慈金数
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5673 分析: 这道题是一道裸的默慈金数,比较容易想到的是用卡特兰数来做.不了解的可以先学习一下. 卡特 ...
- hdu 4828 Grids 卡特兰数+逆元
Grids Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) Problem D ...
- hdu 5184 类卡特兰数+逆元
BC # 32 1003 题意:定义了括号的合法排列方式,给出一个排列的前一段,问能组成多少种合法的排列. 这道题和鹏神研究卡特兰数的推导和在这题中的结论式的推导: 首先就是如何理解从题意演变到卡特兰 ...
- hdu 5184(数学-卡特兰数)
Brackets Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Su ...
- HDU 5673 Robot 数学
Robot 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5673 Description There is a robot on the origi ...
- hdu 4828 Grids(拓展欧几里得+卡特兰数)
题目链接:hdu 4828 Grids 题目大意:略. 解题思路:将上一行看成是入栈,下一行看成是出栈,那么执着的方案就是卡特兰数,用递推的方式求解. #include <cstdio> ...
随机推荐
- RDS for PostgreSQL 云盘加密功能使用方法
RDS for PostgreSQL支持数据盘的加密功能,提供更高的数据存储安全等级.(加密KEY可以由用户提供,也可以由KMS服务生成.) 使用方法: 1.选中需要购买数据库实例的region,创建 ...
- 【html、CSS、javascript-10】jquery-操作元素(属性CSS和文档处理)
一.获得内容及属性 三个简单实用的用于 DOM 操作的 jQuery 方法: text() - 设置或返回所选元素的文本内容 html() - 设置或返回所选元素的内容(包括 HTML 标记) val ...
- TZ_10_spring-AOP日志处理
1.在某个用户登陆后台后对其每一项操作进行保存日志处理 LogAopController @Component @Aspect public class LogAop { @Autowired pri ...
- mockito问题集
使用PowerMockRunner.class,不能在测试类中使用IntStream.rang()
- For循环和闭包问题
考虑一下以下的代码片段: for (var i = 0; i < 5; i++) { var btn = document.createElement('button'); btn.append ...
- SPSS正交设计的操作
SPSS正交设计的操作 设要做二因素的正交设计,A因素有三个水平,B因素有两个水平.则选择Data-->Orthogonal Design-->generate,弹出的就是正交设计窗口: ...
- 链接的属性href=“?” ?该些什么及优缺点
<a onclick="{jscode}">是很常见的一种js运用方式,使用时经常会加一个href=“###”即<a onclick="{jscode} ...
- CSS min-height 属性
实例 设置段落的最小高度: p { min-height:100px; } 浏览器支持 IE Firefox Chrome Safari Opera 所有主流浏览器都支持 min-height 属性. ...
- MySQLDemo2
-- 查询所有数据库 show databases -- 删除数据库 drop database a -- use `数据库名称`; 表示使用此数据库 use mybatis -- 查看表结构 sho ...
- 为GitLab配置邮件服务
修改配置文件:/etc/gitlab/gitlab.rb ####################################################################### ...