【Codeforces Round #418 (Div. 2)】Codeforces 814E An unavoidable detour for home
来源:互联网 发布:dota2职业选手 数据 编辑:程序博客网 时间:2024/06/10 14:51
把图按照最短路分层,那么这个图需要满足每个点都向上一层有且只有一条边,并且没有更向上的边。
我们用
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;#define LL long long#define DP dp[c][j][k][x][y]const int p=1000000007;int d[55],n;LL dp[2][51][51][51][51];void upd(LL &x,LL y){ x+=y; x%=p;}int main(){ scanf("%d",&n); for (int i=1;i<=n;i++) scanf("%d",&d[i]); dp[0][d[1]==2][d[1]==3][d[2]==2][d[2]==3]=1; for (int i=2,c=0;i<n;i++,memset(dp[c],0,sizeof(dp[c])),c^=1) for (int j=0;j<=i;j++) for (int k=0;j+k<=i;k++) for (int x=0;j+k+x<=i;x++) for (int y=0;j+k+x+y<=i;y++) if (DP) { if (!j&&!k) { if (x||y) upd(dp[c][x][y][0][0],DP); continue; } if (d[i+1]==2) { if (j) { upd(dp[c^1][j-1][k][x+1][y],DP*j); if (x) upd(dp[c^1][j-1][k][x-1][y],DP*j*x); if (y) upd(dp[c^1][j-1][k][x+1][y-1],DP*j*y); } if (k) { upd(dp[c^1][j+1][k-1][x+1][y],DP*k); if (x) upd(dp[c^1][j+1][k-1][x-1][y],DP*k*x); if (y) upd(dp[c^1][j+1][k-1][x+1][y-1],DP*k*y); } } else { if (j) { upd(dp[c^1][j-1][k][x][y+1],DP*j); if (x) upd(dp[c^1][j-1][k][x][y],DP*j*x); if (y) upd(dp[c^1][j-1][k][x+2][y-1],DP*j*y); if (x>=2) upd(dp[c^1][j-1][k][x-2][y],DP*j*x*(x-1)/2); if (x&&y) upd(dp[c^1][j-1][k][x][y-1],DP*j*x*y); if (y>=2) upd(dp[c^1][j-1][k][x+2][y-2],DP*j*y*(y-1)/2); } if (k) { upd(dp[c^1][j+1][k-1][x][y+1],DP*k); if (x) upd(dp[c^1][j+1][k-1][x][y],DP*k*x); if (y) upd(dp[c^1][j+1][k-1][x+2][y-1],DP*k*y); if (x>=2) upd(dp[c^1][j+1][k-1][x-2][y],DP*k*x*(x-1)/2); if (x&&y) upd(dp[c^1][j+1][k-1][x][y-1],DP*k*x*y); if (y>=2) upd(dp[c^1][j+1][k-1][x+2][y-2],DP*k*y*(y-1)/2); } } } printf("%I64d\n",dp[n&1][0][0][0][0]);}
阅读全文
0 0
- 【Codeforces Round #418 (Div. 2)】Codeforces 814E An unavoidable detour for home
- CodeForces 814E An unavoidable detour for home题解
- Codeforces-814E An unavoidable detour for home(DP)
- [Codeforces 814E] An unavoidable detour for home DP+BFS树+组合数学
- [2017集训队作业自选题#107]An unavoidable detour for home
- Codeforces Round #449 (Div. 1) E. Welcome home, Chtholly
- Codeforces 405E Codeforces Round #238 (Div. 2)E
- Codeforces Round #103 (Div. 2) E题
- Codeforces Round #147 (Div. 2) E
- Codeforces Round #184 (Div. 2) D、E
- Codeforces Round #197 (Div. 2) (C~E)
- Codeforces Round #102 (Div. 2) //缺E
- Codeforces Round #104 (Div. 2) //缺E
- Codeforces Round #105 (Div. 2) //缺E
- Codeforces Round #103 (Div. 2) //缺E
- Codeforces Round #106 (Div. 2) //缺E
- Codeforces Round #223 (Div. 2) E
- Codeforces Round #229 (Div. 2) E
- db2解决工作流表中有blob字段的异常情况
- Stripe Patterns on Surfaces
- C/C++-动态链接库(DLL)
- Andriod设备使用ADB工具进行调试
- 机房重构之泛型
- 【Codeforces Round #418 (Div. 2)】Codeforces 814E An unavoidable detour for home
- linux--死锁(产生死锁的原因、条件和避免方法)
- 计蒜客 百度地图导航
- Oracle学习笔记(一)——B-Tree索引
- 《算法设计与分析》期末复习精简版
- Java RMI
- Lua使用心得
- python socket构建简单web
- JavaScript事件代理:寻找target目标元素、求结点深度