lightoj 1095 - Arrange the Numbers 组合数学
2016-03-30 09:53
316 查看
给定n,m,k,n个数字中前m个数字有k个数字位置定下来,问有多少种排列方式..
这种组合数学是我最不擅长的,虽然挂在DP专题里但是想不来怎么DP。
感觉就是先有一个c(m,k)..然后就是队友辅助推导了公式..
这种组合数学是我最不擅长的,虽然挂在DP专题里但是想不来怎么DP。
感觉就是先有一个c(m,k)..然后就是队友辅助推导了公式..
#include<bits/stdc++.h> using namespace std; #define ll long long #define mod 1000000007 ll yh[1200][1200]; ll d[1200]; void db() { for(int i=0;i<=1000;i++) { yh[i][0]=yh[i][i]=1; for(int j=1;j<i;j++) yh[i][j]=(yh[i-1][j-1]+yh[i-1][j])%mod; } d[1]=0,d[2]=d[0]=1; for(int i=3;i<=1000;i++) { d[i]=1LL*(i-1)*(d[i-1]+d[i-2])%mod; } } int main() { db(); int t; scanf("%d",&t); for(int cas=1;cas<=t;cas++) { int n,m,k; scanf("%d %d %d",&n,&m,&k); ll ans=0; for(int i=0;i<=n-m;i++) ans=(ans+yh[n-m][i]*d[n-k-i])%mod; ans=(ans*yh[m][k])%mod; printf("Case %d: %lld\n",cas,ans); } return 0; }
相关文章推荐
- Oracle-函数Decode进行多值判断
- 最最实用的30个Linux命令!
- iOS NSData简单解析
- 360春招(实习)笔试编程题
- 在delphi中三个形式:ADODB_TLB ADOInt ADODB
- chkconfig_rh9.sh
- 硬盘安装 红帽系列Linux
- 教育类期刊投稿地址大全
- C语言编译全过程【转】
- 教育改革纲要明确坚持教育公益性和普惠性
- 河南鲁山检方调查青年在看守所喝开水后死亡案
- 修改MYSQL最大连接数的3种方法
- 高校青年老师挣扎在辞职边缘 微薄工资继续啃老
- 心情不好的时候看看
- 11个笑话让你领悟人生
- Extjs3.0拓展comboBox成comboBoxTree
- 在开发环境中,自己搭建一个ssl环境(小例子)
- 《Linux运维之道》的截图
- Java:单例模式的七种写法
- iOS AFNetworking 3.0二次封装(一)