Codeforces Round #144 (Div. 1), problem: (B) Table DP 组合数学
来源:互联网 发布:兄弟钻攻中心编程 编辑:程序博客网 时间:2024/06/18 06:42
题意:求在一个布满方格的矩阵中放置黑点的方案数,时矩阵中每一个n*n的子矩阵中的黑点数都为k。
做法:推导一下发现每一列A[i]放置的黑点数等于A[i+n],这样就可以DP了,有大神的题解,我就不多说了
#include <cstdio>#include <iostream>#define mod 1000000007#define LL long longconst int LMT=102;using namespace std;LL c[LMT][LMT],dp[LMT][10004],val[LMT][2];void init(void){ for(int i=0;i<LMT;i++)c[i][0]=c[i][i]=1; for(int i=1;i<LMT;i++) for(int j=1;j<i;j++) { c[i][j]=c[i-1][j-1]+c[i-1][j]; c[i][j]%=mod; }}LL mypow(LL x,LL y){ LL ret=1; while(y) { if(y&1)ret*=x; ret%=mod; x*=x; x%=mod; y>>=1; } return ret;}int main(void){ int n,k; init(); LL p,m; scanf("%d%I64d%d",&n,&m,&k); dp[0][0]=1; for(int i=0;i<=n;i++) { val[i][0]=mypow(c[n][i],m/n); val[i][1]=(val[i][0]*c[n][i])%mod; } for(int i=1;i<=n;i++) { for(int j=0;j<=k;j++) for(int t=j;t>=0&&j-t<=n;t--) { p=(m%n>=i); dp[i][j]+=dp[i-1][t]*val[j-t][p]; dp[i][j]%=mod; } } cout<<dp[n][k]<<endl; return 0;}
- Codeforces Round #144 (Div. 1), problem: (B) Table DP 组合数学
- Codeforces Round #160 (Div. 1), problem: (B) Maxim and Restaurant DP+组合数学
- Codeforces Round #144 (Div. 1) B dp
- Codeforces Round #157 (Div. 1), problem: (C) Little Elephant and LCM DP+组合数学 0(n^(5/2))
- Codeforces Round #272 (Div. 2) B. Dreamoon and WiFi dp,组合数学
- Codeforces Round #196 (Div. 2) / 337B Routine Problem(数学)
- Codeforces Round #319 (Div. 2)B. Modulo Sum(数学,DP)
- Codeforces Round #177 (Div. 1) B. Polo the Penguin and Houses (组合数学)
- Codeforces Round #162 (Div. 1) B dp
- Codeforces Beta Round #79 (Div. 1 Only), problem: (B) Buses 路径DP
- Codeforces Beta Round #77 (Div. 1 Only), problem: (B) Lucky Numbers 数位DP+剪枝DFS+贪心
- Codeforces Round #209 (Div. 2), problem: (A) Table problem: (B) Permutation
- 【组合数学】 Codeforces Round #295 (Div. 1) C - Pluses everywhere
- Codeforces Round #419 (Div. 2) (Codeforces 815B) D. Karen and Test 组合数学
- Codeforces Round #243 (Div. 1) B Sereja and Table
- Codeforces Round #282 (Div. 2) B.(数学)
- Codeforces Round #138 (Div. 1), problem: (B) Two Strings
- Codeforces Round #168 (Div. 1), problem: (B) Zero Tree, DFS
- UVA 11384 - Help is needed for Dexter
- C++常见编译错误分析总结
- 学习Activity保存状态的onSaveInstanceState方法
- 多个菜单展开和折叠
- java辨析
- Codeforces Round #144 (Div. 1), problem: (B) Table DP 组合数学
- 微软的Visual Studio 2010 SP1的Web标准更新
- 【Android数据传递】全局变量的使用方法(附源码)
- UVa 10600 ACM contest and Blackout( 次小生成树)
- 汇编中的管道操作方法
- 云计算特点
- JAVA语言编码规范
- c语言中的#ifndef、#def、#endif等宏是什么意思 .
- Codeforces Round #138 (Div. 1), problem: (B) Two Strings