• 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 }
  • 相关阅读:
    uva11922splay
    获取的二维数组排序
    二维数组排序
    $.extend
    <eq>标签
    datagrid时间插件
    id=%d是什么意思呢?
    获得某一月的第一天,最后一天
    数组合并
    phpexcel 导入导出excel表格
  • 原文地址:https://www.cnblogs.com/huoxiayu/p/4676527.html
Copyright © 2020-2023  润新知