zoukankan      html  css  js  c++  java
  • CF1396B Stoned Game

    传送门


    博弈论小题,练练手。


    题面:(n)堆石子,两人轮流取,每次取一个,但不能取对手上次取过的那一堆,问在两人都采用最优策略时,先手必胜还是先手必败。


    (sum a_i=S),分两种情况讨论:

    1. 如果(exist a_i > lfloorfrac{S}{2} floor),那么先手必胜。因为先手可以一直取这一堆石子,而后手就一直不能取这一堆石子。那么当后手把其他石子都取完了后,(a_i)这堆石子还剩,因此先手必胜。

    2. (forall a_i leqslant lfloor frac{S}{2} floor),那么当(S)为偶数的时候,先手必败,否则先手必胜。先考虑(n)为偶数的情况:我们可以做一个完美匹配:将所有石子按每一堆依次标号,那么标号为(x)(x + lfloor frac{S}{2} floor)的两颗石子必然不在一堆里,因此先手取(x),后手就可以取(x + lfloor frac{S}{2} floor),直到后手把最后一棵石子取完。而对于(S)是奇数的情况,先手任取一颗石子,就变成了(S)是偶数的情况,因此先手必胜。

    {
    	int T = read();
    	while(T--)
    	{
    		int n = read();
    		int sum = 0, Max = 0;
    		for(int i = 1; i <= n; ++i) 
    		{
    			int x = read();
    			sum += x, Max = max(Max, x);
    		}
    		puts((Max > sum / 2 || (sum & 1)) ? "T" : "HL");
    	}
    	return 0;
    }
    
  • 相关阅读:
    前端资源分享
    解决COM组件80070005错误
    【迁移】—Entity Framework实例详解 转
    IIS错误处理集合
    疯狂蚂蚁框架搭建
    MSSQL日期格式化
    一句SQL实现获取自增列操作
    mongodb 性能篇
    mongodb管理篇
    mongodb高级应用
  • 原文地址:https://www.cnblogs.com/mrclr/p/15416855.html
Copyright © 2011-2022 走看看