[codevs3862]竞赛班的垃圾处理
2015-08-18 21:13
204 查看
题目描述 Description
竞赛班的师弟们都很懒,每个人都不喜欢倒垃圾,结果垃圾就会跟师兄的RP一样越堆越多,当然,老师时不时就会叫他们去倒垃圾。由于他们真的很懒,他们只会直接将垃圾桶最上面袋拿去扔。师弟们扔垃圾的时候,会先把垃圾装成袋,然后将垃圾编号,第一袋扔到垃圾桶的垃圾编为①号……掏垃圾的阿伯会清点一下编号的顺序,然后反馈给老师,让老师知道竞赛班高一师弟到底有多懒……【比如:当师弟们扔了3袋垃圾时,得到的编号有可能是123(每一袋扔进垃圾桶时他们就拿去扔,这个编号说明还是有人挺勤劳的),132(第一袋拿出去扔,然后垃圾桶里多扔了第2,3袋之后,他们再从上往下一袋一袋拿去扔)……】而竞赛班某师弟对阿伯倾慕已久,想知道阿伯最后收到的垃圾的顺序有多少种可能,由于他不好好学习科学文化知识,智商有点捉鸡,于是想让你帮他算出来,但你又觉得亲身实践简直蠢到爆,于是,你决定让计算机去做这件事。如果1s内计算机算不出,那少年,倒垃圾去吧,你太懒了……
输入描述 Input Description
只有一个整数n,表示师弟们总共扔了多少袋垃圾。输出描述 Output Description
只有一个整数m,表示阿伯掏出垃圾的顺序的总可能结果。样例输入 Sample Input
3样例输出 Sample Output
5数据范围及提示 Data Size & Hint
时间限制每个测试点1s
数据范围
对于50%的数据,1≤n≤15对于100%的数据,1≤n≤35
Hint
垃圾要按时倒啊,没听说过倒垃圾的男人最性感吗?【哪听来的这句话= =】……
35袋垃圾……姚老叫你们不要在机房吃东西听到没有
Problem by Tangenty
思路
卡特兰数最基本的操作,不知道的同学自行脑补度娘,这里在奉送上几个求解的方式。令 h(0)=1,h(1)=1,h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)h(0) (n>=2) h(n)=h(n-1)*(4*n-2)/(n+1);(n<=34) h(n)=C(2n,n)/(n+1) (n=1,2,3,...) h(n)=c(2n,n)-c(2n,n+1)(n=1,2,3,...)
View Code
题目代码
var h:array[-100..100] of int64; j,n,k:int64;i:longint; begin fillchar(h,sizeof(h),0); h[0]:=1; h[1]:=1; readln(n); if (n=1) or (n=0) then begin writeln(h ); halt; end; for i:=2 to n do begin j:=i-1; k:=0; while k<>i do begin h[i]:=h[i]+h[k]*h[j]; dec(j); inc(k); end; end; writeln(h ); end.
相关文章推荐
- 移动开发的一些积累
- Java Socket 连接 Client端 和 Server端
- PHP setcookie()用法
- BZOJ4239 : 巴士走读
- 黑马程序员----异常处理机制的概括
- Vsftpd服务搭建
- andriod-javamail 实现发送邮件
- Java基础50问与答
- Android 笔记1
- POJ2528 Mayor's posters
- ubuntu开机屏幕发暗,设置开机自启动设置亮度
- 试题系列一(求4,5,6,7所有四位数的排列组合)
- 美团面试
- Centos6.6 zabbix 安装和配置
- Android之HttpClient的使用方法
- 单链表的整表创建和删除(四)
- uva 1175 Ladies' Choice (稳定婚姻问题)
- 差分约束系统详解
- Eddy's digital Roots HDU杭电1163 【一个比较实用的定理】
- 如何有效地记忆与学习