zoj 3057 Beans Game 博弈论

思路:三维DP,刚开始用记忆化搜索,MLE……

后来改为直接预处理所有的情况。

总之就是必败态的后继是必胜态!!!

代码如下:

 

 1 #include<iostream>

 2 #include<cstdio>

 3 #include<cmath>

 4 #include<algorithm>

 5 #include<cstring>

 6 #include<set>

 7 #include<vector>

 8 #define ll long long

 9 #define M 302

10 #define inf 1e10

11 #define mod 1000000007

12 using namespace std;

13 bool dp[M][M][M];

14 int main()

15 {

16     int a,b,c,t;

17     memset(dp,0,sizeof(dp));

18     for(int i=0;i<=300;i++)

19     for(int j=0;j<=300;j++)

20     for(int k=0;k<=300;k++){

21         if(!dp[i][j][k]){

22             for(t=1;t+i<=300;t++)

23                 dp[i+t][j][k]=1;

24             for(t=1;t+j<=300;t++)

25                 dp[i][j+t][k]=1;

26             for(t=1;t+k<=300;t++)

27                 dp[i][j][k+t]=1;

28             for(t=1;t+i<=300&&t+j<=300;t++)

29                 dp[i+t][j+t][k]=1;

30             for(t=1;t+i<=300&&t+k<=300;t++)

31                 dp[i+t][j][k+t]=1;

32             for(t=1;t+j<=300&&t+k<=300;t++)

33                 dp[i][j+t][k+t]=1;

34         }

35     }

36     while(scanf("%d%d%d",&a,&b,&c)!=EOF){

37         printf("%d\n",dp[a][b][c]);

38     }

39     return 0;

40 }
View Code

 

 

 

你可能感兴趣的:(bean)