zoukankan      html  css  js  c++  java
  • HDU 4371 Alice and Bob [简单博弈]

      有K个数D1~DK,一开始S0=0,每个人可以报一个数Si+1=Si-1+Dj或者Si+1=Si-Dj(1<=j<K),并且满足Si<=N及Si>Si-2,最先不能报数者输。

      如果自己在某回合报的不是最小数,那么对方就可以减掉最小数使S变小,因为要满足条件自己又要加上一个比最小数大的数,对方又可以减掉最小数。。。这样每次使数变大的都是自己,必输。

      所以最优策略就是一直报最小数。

      

     1 #include <stdio.h>
     2 #include <string.h>
     3 #include <queue>
     4 #define INF 0x3f3f3f3f
     5 #define MAXN 335
     6 int cas, n, m, x, minx;
     7 int main(){
     8     //freopen("test.in", "r", stdin);
     9     scanf("%d", &cas);
    10     for (int ca = 1; ca <= cas; ca++) {
    11         scanf("%d%d", &n, &m);
    12         minx = INF;
    13         for (int i = 0; i <m; i++) {
    14             scanf("%d", &x);
    15             minx = std::min(x, minx);
    16         }
    17         printf ("Case #%d: %s", ca, (n/minx)&1 ? "Bob\n":"Alice\n");
    18     }
    19     return 0;
    20 }
  • 相关阅读:
    angular模板
    Growth: 全栈增长工程师指南
    全栈增长工程师实战
    vue 快速搭建项目 iview
    ng-style
    教程视频链接
    内置对象
    对象—封装、继承
    对象—构造函数
    函数-理论
  • 原文地址:https://www.cnblogs.com/swm8023/p/2717838.html
Copyright © 2011-2022 走看看