师范大学 e: skyscrapers
2014-03-20 19:38
260 查看
![](http://images.cnitblog.com/i/466708/201403/201935553969222.png)
![](http://images.cnitblog.com/i/466708/201403/201936024439300.png)
#include<iostream> #include<stdio.h> #include<cstring> #include<cstdlib> using namespace std; typedef __int64 LL; const LL mod = 1000000007; LL cnm[5002][5002]; LL dp[5002][5002]; void prepare() { LL i,j; for(i=0;i<=5000;i++) { cnm[0][i]=1; cnm[i][0]=1; } for(i=1;i<=5000;i++) { for(j=1;j<=i&&j<=5000;j++) { if(i==j) { cnm[i][j]=1;continue;} if(j==1) { cnm[i][j]=i;continue;} cnm[i][j]=(cnm[i-1][j]+cnm[i-1][j-1])%mod; } } dp[0][0]=1; for(i=1;i<=5000;i++) for(j=1;j<=5000;j++) dp[i][j]=(dp[i-1][j-1]+((i-1)*dp[i-1][j])%mod)%mod; } int main() { LL n,a,b,cur; LL l,r; prepare(); while(scanf("%I64d%I64d%I64d",&n,&a,&b)>0) { if(n==0&&a==0&&b==0)break; l=a;r=n-b+1; for(cur=0;l<=r;l++) { cur=( cur+((cnm[n-1][l-1]*dp[l-1][a-1])%mod)*dp[n-l][b-1])%mod; } printf("%I64d\n",cur); } return 0; }
相关文章推荐
- C# 学习之函数
- SpringMVC后缀
- Java开发牛人十大必备网站
- 允许所有网络包括外网访问apache服务器的方法
- 输入一组数据,在输入一个数,找到比它大的并排序
- UVa 331 Mapping the Swaps
- 个性化智能推荐技术研究总结
- 工具配置(eclipse/plsql)
- struts2.3.1 使用codebehind插件实现零配置时struts.xml中必须加入一个<constant name="struts.enable.DynamicMethodInvocati
- Linux基础篇之SELinux
- 编译器运行程序和直接双击运行程序一个成功一个失败的问题说明
- IP选路
- Java Web的Timer详解
- 公钥与私钥
- JavaScript中typeof与instanceof操作符
- POJ 2492 A Bug's Life(并查集)
- windows网络编程学习笔记三
- 网站后台查找方法总结
- 漫谈linux文件IO
- 最大子数组