ZOJ 3057 Beans Game 博弈DP
来源:互联网 发布:生意 软件 编辑:程序博客网 时间:2024/05/22 16:44
题目链接:这里
题意:三堆石头,每次从一堆中取走若干,或者从两堆中取走相同的数量 ,最后取的人胜。
解法:博弈DP,dp[i][j][k]表示三堆石头分别为i,j,k状态时候是否为必胜。
之后便是N,P态的转换,成必败态能到达的一定是必胜态。不能用记忆化搜索,常数太大,会TLE。而且还卡内存,不能用int,要用bool型。
//ZOJ 3057 博弈DP#include <stdio.h>#include <string.h>#include <iostream>using namespace std;bool dp[301][301][301] = {0};int main(){ for(int i = 0; i <= 300; i++){ for(int j = 0; j <= 300; j++){ for(int k = 0; k <= 300; k++){ if(!dp[i][j][k]){ for(int r=1; r+i<=300; r++) dp[i+r][j][k] = 1; for(int r=1; r+j<=300; r++) dp[i][j+r][k] = 1; for(int r=1; r+k<=300; r++) dp[i][j][k+r] = 1; for(int r=1; r+i<=300&&r+j<=300; r++) dp[i+r][j+r][k] = 1; for(int r=1; r+i<=300&&r+k<=300; r++) dp[i+r][j][k+r] = 1; for(int r=1; r+j<=300&&r+k<=300; r++) dp[i][j+r][k+r] = 1; } } } } int a, b, c; while(scanf("%d%d%d", &a,&b,&c)!=EOF){ printf("%d\n", dp[a][b][c]); }}
0 0
- 博弈---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 3057 Beans Game (博弈入门)
- zoj 3057Beans Game
- zoj3057 Beans Game---三维DP 博弈
- zoj3057 Beans Game---三维DP 博弈
- ZOJ 3057 Beans Game题解
- ZOJ 3057 组合博弈 DP
- zoj 2290 GAME 博弈
- [博弈][DP]DLUTOJ1328: Bricks Game
- 【SPOJ-MGAME1】Game【博弈DP】
- 【ZOJ 1913】Euclid's Game(博弈)
- ZOJ-1039 Number Game(SG博弈)
- ZOJ 1024 Calendar Game (DP)
- poj1678 I Love this Game!---dp博弈
- NYOJ 1239 引水工程【prim算法】
- Android_Calendar_使用详解
- Bluetooth中文api
- EL表达式 JSTL标签获取数据
- leetcode 322. Coin Change
- ZOJ 3057 Beans Game 博弈DP
- Spring Scheduler定时任务 + Quartz
- 使用Ajax验证用户名是否存在
- C#基础编程
- 显著性检测之Cvpr13之一
- iOS源码解析—YYCache(概述)
- 2017.3.11模拟赛题解
- java——数组
- 归并排序