ZOJ 3057 组合博弈 DP
来源:互联网 发布:阿里云邮箱忘记密码 编辑:程序博客网 时间:2024/06/03 18:48
一开始超时了,后来发现不能由已知的必败态导出的必胜态还是必败态(虽然还是有点模糊)
然后MLE,只能把数组开成bool 总算过了
#include <set>#include <cmath>#include <cstdio>#include <cstring>template <class T> inline T MAX(T a, T b){if (a > b) return a;return b;}template <class T> inline T MIN(T a, T b){if (a < b) return a;return b;}bool sg[301][301][301];void dfs1(int a, int b, int c){ int i, lim; for (i = a + 1; i <= 300; ++i) sg[i][b][c] = 1; for (i = b + 1; i <= 300; ++i) sg[a][i][c] = 1; for (i = c + 1; i <= 300; ++i) sg[a][b][i] = 1; lim = MIN(300 - b, 300 - a); for (i = 1; i <= lim; ++i) sg[a + i][b + i][c] =1; lim = MIN(300 - b, 300 - c); for (i = 1; i <= lim; ++i) sg[a][b + i][c + i] = 1; lim = MIN(300 - a, 300 - c); for (i = 1; i <= lim; ++i) sg[a + i][b][c + i] = 1;}void init(){ memset(sg, false, sizeof(sg)); sg[0][0][0] = 0; dfs1(0, 0, 0); for (int i = 0; i <= 300; ++i) for (int j = 0; j <= 300; ++j) for (int k = 0; k <= 300; ++k) { if (sg[i][j][k]) continue; dfs1(i, j, k); }}int main(){ int a[10]; init(); while (scanf("%d%d%d", &a[0], &a[1], &a[2]) != EOF) {// sort(a, a + 3); printf("%d\n", sg[a[0]][a[1]][a[2]]); } return 0;}
- ZOJ 3057 组合博弈 DP
- 博弈---ZOJ 3057 Beans Game(DP博弈)
- ZOJ 3057 Beans Game(博弈DP)
- Beans Game(博弈 | | DP)zoj 3057
- ZOJ 3057 Beans Game 博弈DP
- ZOJ 3057 Beans Game 【DP+博弈】
- zoj 3344 //组合数学那种的DP
- ZOJ 3797 Sister's Noise 组合+DP
- 组合博弈
- 组合博弈
- 组合博弈
- BZOJ4550 小奇的博弈 【Nimk游戏 + dp + 组合数】
- ZOJ 3057 Beans Game (博弈入门)
- ZOJ 3791 An Easy Game(dp+组合数)
- [ACM] ZOJ 3725 Painting Storages (DP计数+组合)
- [ACM] ZOJ 3725 Painting Storages (DP计数+组合)
- zoj 3529 博弈SG
- ZOJ 2083 SG博弈
- T1-link and T3-link
- 让我蛋疼了好久的2D游戏图像颜色处理
- linux的文件属性和权限学习——分析ls命令结果
- Linux基本操作 1-----命令行BASH的基本操作
- UVA 10382 Watering Grass(变相的最小覆盖问题)
- ZOJ 3057 组合博弈 DP
- SQL Server 2008不允许保存更改
- 旧诗
- QT和OpenCV 显示视频 http://zllxsha.blog.163.com/blog/static/50555091201011892029213/
- UVA591- Box of Bricks
- Struts2中启用各个内置对象的方法
- 装载、链接与库
- 细说MVC 结构
- fread和fwrite使用的题..