zoukankan      html  css  js  c++  java
  • spoj 3885

    简单的博弈题,用dp解;

    每个人只能拿1,l,k个硬币;

    dp[i][j]表示第j个人拿是否能拿第i枚硬币;

    代码:

     1 #include<cstdio>
     2 #define maxn 1000007
     3 using namespace std;
     4 bool dp[maxn][2];
     5 int x,l,m,k;
     6 
     7 int main()
     8 {
     9     scanf("%d%d%d",&k,&l,&m);
    10     for(int i=1;i<=1000000;i++)
    11         for(int j=0;j<2;j++)
    12         {
    13             dp[i][j]|=1-dp[i-1][j^1];
    14             if(i>=l)dp[i][j]|=1-dp[i-l][j^1];
    15             if(i>=k)dp[i][j]|=1-dp[i-k][j^1];
    16         }
    17     while(m--)
    18     {
    19         scanf("%d",&x);
    20         printf("%c",'B'-dp[x][0]);
    21     }
    22     puts("");
    23     return 0;
    24 }
    View Code
  • 相关阅读:
    day74作业
    day072作业
    Serializer类
    day067作业
    day066作业
    day065作业
    django
    jQuery
    JavaScript
    mediaplayer state
  • 原文地址:https://www.cnblogs.com/yours1103/p/3353333.html
Copyright © 2011-2022 走看看