zoukankan      html  css  js  c++  java
  • hdu 3951 博弈

    思路:先特判k=1和k>=n的情况,然后我们可以发现其余情况一定是第二个人赢。证明:因为排除了特殊情况,所以第一个人第一次不可能拿走全部的coin,对于剩下的coin,记为m个,如果第二个人一次就能拿走全部的coin,那么第二个人就赢了;如果不能,说明m>k>=2,则m至少为3,所以第二个人一定可以拿走一些连续的coin,将剩下的coin变成长度相等的两条链,此后第二个人只要模仿第一个人的操作:即第一个人在某一堆拿走了一些coin,第二个人就在另一堆拿走等量的coin,最后便会获胜。

     1 #include <iostream>
     2 #include <cstring>
     3 #include <cstdio>
     4 using namespace std;
     5 
     6 int main ()
     7 {
     8     int t;
     9     scanf("%d", &t);
    10     for ( int _case = 1; _case <= t; _case++ )
    11     {
    12         printf("Case %d: ", _case);
    13         int n, k;
    14         scanf("%d%d", &n, &k);
    15         if ( n <= k )
    16         {
    17             printf("first
    ");
    18             continue;
    19         }
    20         if ( k == 1 )
    21         {
    22             if ( n & 1 ) printf("first
    ");
    23             else printf("second
    ");
    24             continue;
    25         }
    26         printf("second
    ");
    27     }
    28     return 0;
    29 }
  • 相关阅读:
    无刷电机控制基本原理
    SPI 串行Flash闪存W25Q128FV 的使用(STM32F407)_软件篇
    CAN总线简介
    RS-232串口特性
    PLSQL 安装教程
    JS 常用正则表达式备忘录
    JS数组去重
    Js中Map对象的使用
    JS操作字符串
    前端小技巧
  • 原文地址:https://www.cnblogs.com/huoxiayu/p/4676527.html
Copyright © 2011-2022 走看看