hdu 4045 第二类Stirling数
来源:互联网 发布:淘宝微博运营团队 编辑:程序博客网 时间:2024/03/29 03:36
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4045
大意:序号为1到n,选r个东西,序列之差大于等于k,放到m个盒子里。
分为两部分:
1.C(n-((r-1)*k+r+1),r)。。。。插板法。。。实在不想看高中的东西了
2.就是第二类斯特林数了
S(n+1,k)=S(n-1,k-1) + kS(n-1,k)
#include<bits/stdc++.h>using namespace std;typedef long long ll;const ll mod= 1000000007;const int maxn=1005;ll stir2[maxn][maxn];void get_stir2(){ for(int i=1;i<maxn;i++){ stir2[i][0]=0; stir2[i][i]=1; for(int j=1;j<i;j++) stir2[i][j]=(stir2[i-1][j-1]+j*stir2[i-1][j])%mod; }}void gcd(ll a,ll b,ll &d,ll &x,ll &y){ if(!b){d=a;x=1;y=0;} else{ gcd(b,a%b,d,y,x);y-=x*(a/b);}}ll inv(ll a,ll n){ ll d,x,y; gcd(a,n,d,x,y); return d==1? (x+n)%n:-1;}ll C(ll n,ll m){ //C(n,m)£¬mÀïÑ¡n¸ö¡£ ll ans,a=1,b=1; for(ll i=m;i>=m-n+1;i--) a=a*i%mod; for(ll i=n;i>1;i--) b=b*i%mod; ans=a*inv(b,mod)%mod; return ans;}int main(){ get_stir2(); ll n,r,k,m; while(~scanf("%lld%lld%lld%lld",&n,&r,&k,&m)){ ll tmp=n-((r-1)*k+1); if (tmp<0){ printf("0\n"); continue; } ll sum=0,ans=C(r,tmp+r); for(int i=1;i<=m;i++) sum=(sum+stir2[r][i])%mod; ans=(ans*sum)%mod; printf("%lld\n",ans); } return 0;}
阅读全文
0 0
- hdu 4045 第二类Stirling数
- 第二类Stirling数
- 第二类Stirling数
- 第二类Stirling数
- HDU 2512 一卡通大冒险(第二类 stirling 数)
- hdu-4045-Machine scheduling-组合数学(插板+第二类Stirling数)
- 【笔记】第一类Stirling数和第二类Stirling数
- 第一类Stirling数和第二类Stirling数
- 第一类stirling数和第二类stirling数
- 【知识点】 --- 第一类Stirling数和第二类Stirling数
- 第一类Stirling 数 与 第二类Stirling 数
- 第一类Stirling数和第二类Stirling
- 第一类Stirling数和第二类Stirling
- HDU 6143 Killer Names(组合数+第二类Stirling数)
- HDU 6143 Killer Names 组合数+(容斥/第二类Stirling数)
- LightOJ 1326 Race (第二类Stirling数)
- SDNU 1011(第二类stirling数)
- HDU 6143 Killer Names (容斥/第二类Stirling数)
- 字符串函数模拟实现
- Hibernate(六)多表联查之单向一对一
- Educational Codeforces Round 10C Foe Pairs
- 库文件版本信息查看
- 协调器断电之后再上电,终端设备不能入网的问题
- hdu 4045 第二类Stirling数
- python统计大小写字符出现的个数
- nyoj 284 坦克大战(BFS)
- 改变keras模型参数来提高kaggle手写体数字识别
- bottle创建python的rest接口
- java web的简单分页
- jsp+servlet开发小型商城日志
- 数字图像处理--算术、几何、谐波、逆谐波均值滤波器Matlab
- java调用python脚本