[Codeforces 246D] 终于补齐了 ,感动。。。
来源:互联网 发布:自然知彼孕妇可以用吗 编辑:程序博客网 时间:2024/04/30 00:45
Wall Bars
题意:
一个四面的梯子,1~n每个高度只可以有一个杆子。一个人一步最多做m高度,问能至少爬到n - m +1 ~ n 之一的有多少种方案。
解法:
DP
dp[N][p][q][r][ok] 代表爬到N高度,剩下三面高度在N - p , N - q , N - r ,并且是否可达到N状态 ok = false or true
转移的话就是枚举是从哪个部分爬到N+1的。其余的部分就+1即可。
用p,q,r = 0 来表示 某个梯子无法达到N左右的高度了。
ok = 1 是可达
int dp[2][33][33][33][2];int n , m;#define AD(b , c , d , e) INC(dp[nex][(b)][(c)][(d)][(e)] , dp[now][j][p][q][ok])#define Z(a) (a ? (a + 1) % m : 0)void solve(){ RST(dp); dp[1][0][0][0][1] = 4; int now = 1 , nex = 0; for (int i = 1 ; i < n ; ++i , swap(now , nex)){ RST(dp[nex]); REP_3(j , p , q , m , m , m) REP(ok , 2){ AD(Z(j),Z(p),Z(q),ok); AD( ok ,Z(p),Z(q),i < m || j); AD(Z(j), ok ,Z(q),i < m || p); AD(Z(j),Z(p), ok ,i < m || q); } } int ans = 0; REP_3(j , p , q , m , m , m){ INC(ans , dp[n & 1][j][p][q][1]); if (j + p + q) INC(ans , dp[n & 1][j][p][q][0]); } OT(ans);}#undef AD#undef Zint main(){ while(cin >> n >> m) solve();}
- [Codeforces 246D] 终于补齐了 ,感动。。。
- codeforces 551d[补]
- codeforces 554d[补]
- codeforces 785d[补]
- codeforces 569d[补]
- codeforces 514d[补]
- 博客终于重新开通了,感动ing
- 小D终于70了...
- Codeforces Round #409 div2 【A~D√ E待补】
- Educational Codeforces Round 24 D. Multicolored Cars 补题
- Codeforces Round #430 (Div. 2) C+D补题记录
- 孙卫琴感动了我!
- 被蓝调感动了
- 看了很感动
- 哪一天我感动了!
- 居然感动哭了!
- 佛感动了
- 感动了时间
- Solid Converter PDF v7.3
- android 显示单选列表对话框 builder.setSingleChoiceItems
- 监听android home键的实现方式 和back键
- webservice 远程服务器返回错误:(400)错误的请求
- Android Intent组件使用
- [Codeforces 246D] 终于补齐了 ,感动。。。
- 本文将要讨论Objective-C中的方法替换(method replacement)和swizzling(移魂大法)。
- PHP不报错 只显示服务器错误问题
- Android开发--Http操作介绍(二)
- p4jorm让你 CURD 无需写一行代码,请拍砖
- 线程安全的无锁算法
- jdbc小知识点
- 徐小凤的歌声
- 计算两个字符串的最长公共子字符串