hdu5673 Robot
2016-04-24 22:09
375 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5673
题目大意:一个机器人,可以向左,向右或停在当前位置每个动作都话费n个时间,但不能移动到原点左面,问n个时间后仍在原点位置有多少种走法。
解题思路:开始乱搞了一通,后来看的题解,枚举robot向左走的步数,同时它向右走的步数是一样的因为要回到原点,所以对于每一种情况,向左走i步,有Cn2i Catalan(i)
种情况,组合数为从n步中选出那几步走(向左或向右)的情况数,catalan数可以理解为当向左走时火车进站,向右走为出站。
题目大意:一个机器人,可以向左,向右或停在当前位置每个动作都话费n个时间,但不能移动到原点左面,问n个时间后仍在原点位置有多少种走法。
解题思路:开始乱搞了一通,后来看的题解,枚举robot向左走的步数,同时它向右走的步数是一样的因为要回到原点,所以对于每一种情况,向左走i步,有Cn2i Catalan(i)
种情况,组合数为从n步中选出那几步走(向左或向右)的情况数,catalan数可以理解为当向左走时火车进站,向右走为出站。
/* ******************************** Author : danmu Created Time : 2016年04月23日 星期六 10时03分50秒 File Name : hdu5673.cpp Vim Command copy -> yy paste -> p P del this line -> dd Ctrl-Z -> u U copy into system -> "+y ******************************** */ #include <algorithm> #include <iostream> #include <cstdlib> #include <cstring> #include <iomanip> #include <string> #include <vector> #include <cstdio> #include <stack> #include <queue> #include <cmath> #include <list> #include <map> #include <set> #define ULL unsigned long long #define PI 3.1415926535 #define INF 0x3f3f3f3f #define LL long long #define eps 1e-8 #define mod 1000000007 #define MAX 1000010 using namespace std; LL inv[MAX+5],C[MAX+5],cat[MAX+5]; void init(){ C[0]=1; inv[1]=1; for(int i=2;i<=MAX;++i) inv[i]=(mod-mod/i)*inv[mod%i]%mod; cat[0]=cat[1]=1; for(int i=2;i<=500000;++i) cat[i]=cat[i-1]*(4*i-2)%mod*inv[i+1]%mod; } int main() { //freopen("in.txt", "r", stdin); //freopen("out.txt", "w", stdout); int t; init(); scanf("%d",&t); while(t--){ int n; LL ans=0; scanf("%d",&n); for(int i=1;i<=n;++i) C[i]=C[i-1]*(n-i+1)%mod*inv[i]%mod; for(int i=0;i<=n/2;++i) ans=(ans+cat[i]*C[i*2])%mod; //printf("%lld %lld %lld \n",C[0],C[1],C[2]); printf("%lld\n",ans); } return 0; }
相关文章推荐
- Hibernate4实战 之 第二部分:Hibernate的基本配置
- CQOI2016 密钥破解 pollard-rho
- android.webkit.WebView/WebViewClient/WebChromeClient
- http请求和消息
- linux常用查看硬件设备信息命令
- LeetCode *** 79. Word Search
- 机器学习基石第七讲:the vc dimension
- jQuery EasyUI之Form表单提交
- 如何应用assets下的文件
- 链栈的基本操作
- python文件读写
- 20145322何志威 《Java程序设计》第8周学习总结
- netstat命令使用
- Java的构造方法
- 装饰者模式
- web服务器的工作原理及相关协议
- IP地址与网段的划分
- java.util包---LinkedList
- vim下ctags+taglist环境的搭建
- Jquery中filter()与Find()区别