lightoj 1246 - Colorful Board DP+组合数
来源:互联网 发布:linux主机管理系统 编辑:程序博客网 时间:2024/05/22 07:05
给定n+1*m+1的图,然后曼哈顿距离为奇数的点不能同一种颜色..有k种颜色,问涂完整张图有多少种方案。
这个题去年寒假在NBUT的红包赛里出现过....比赛中没出..
首先考虑1 1点肯定不能和点的x+y是奇数的颜色一样...可以和其他的点颜色相同,那么一个图就分成两半...
就是一半x+y为偶数的点用a种颜色,另外的用b种颜色,切a+b<k...
我组合数学烂的可以,感觉可以容斥,但是不会推啊- -赛后被教育可以用DP事先打出来表。
dp[i][j]代表i个各自涂j种颜色的方案数是多少...
#include<bits/stdc++.h>using namespace std;#define ll long long#define ull unsigned long long#define mod 1000000007#define inf 0x3f3f3f3fll dp[300][60],c[60][60];void db(){ c[1][0]=c[1][1]=1; for(int i=2;i<=50;i++) { c[i][0]=c[i][i]=1; for(int j=1;j<i;j++) c[i][j]=(c[i-1][j]+c[i-1][j-1])%mod; } for(int i=1;i<=210;i++) { dp[i][1]=1; for(int j=2;j<=50;j++) { dp[i][j]=(dp[i-1][j]+dp[i-1][j-1])*j%mod;//可能是已经有的颜色或者新加的颜色。 } }}int main(){ int t; db(); scanf("%d",&t); for(int cas=1;cas<=t;cas++) { int n,m,k; scanf("%d %d %d",&n,&m,&k); if(n==0&&m==0) { printf("Case %d: %d\n",cas,k); continue; } n++,m++; int x=n*m/2;//奇数点 int y=n*m-x;//偶数点 ll ans=0; for(int i=1;i<k;i++) { for(int j=1;j<=k-i;j++) { ans+=((c[k][i]*dp[x][i])%mod)*((c[k-i][j]*dp[y][j])%mod)%mod; ans=ans%mod; } } printf("Case %d: %lld\n",cas,ans); } return 0;}
0 0
- LightOJ 1246 Colorful Board (DP+组合数)
- lightoj 1246 - Colorful Board DP+组合数
- lightoj 1246 - Colorful Board
- lightOJ 1246 Colorful Board
- Colorful Board Lightoj 思考一周多后的灵感
- Light OJ 1246 Colorful Board (棋盘黑白染色+数学)
- LightOJ 1005 - Rooks 组合数
- LightOJ 1005 Rooks (排列数 组合数)
- LightOJ 1005 - Rooks (dp、组合数学)
- 组合数+dp 运
- lightoj--1005--Rooks(组合数)
- lightoj 1005 ROOKS(组合数)
- 多重集组合数DP
- 多重集组合数 dp
- 多重集组合数-DP
- 开锁魔法 DP+组合数
- OpenJudge_P2985 数的组合(DP)
- hdu5396(区间dp+组合数)
- 史上最全的maven pom.xml文件教程详解
- [poj 2331] Water pipe ID A*迭代加深搜索(dfs)
- RabbitMq、ActiveMq、ZeroMq、kafka之间的比较,资料汇总
- Oracle ORA-01940 无法删除当前已连接用户
- java中两种随机数的产生方式
- lightoj 1246 - Colorful Board DP+组合数
- PHP 登录【完整代码】
- ubunto开启root账户并开启SSH远程访问
- iOS 9.3 升级后无法真机测试 Could not find Developer Disk Image
- HDU 1181 变形课
- options controlling C dialect
- Repeater实现锁定行、列的滚动效果
- STL之vector
- HP-Socket国产优秀socket通信组件推荐