zoukankan      html  css  js  c++  java
  • CF1396B Stoned Game(思路题)

    如果存在一堆石子个数大于剩余所有堆的的石子总数,那么先手占据此堆石子,先手胜。

    否则,考虑最终状态必定只有一堆石子,现证明双方都可以通过设定操作策略为取走目前可取的石子最多的那堆做到最后一堆石子被拿干净:

    假设不被拿干净,必定是出现了最多石子的那堆石子数目大于其他之和的状态(例如最终状态),逆推回去可以发现每两次取石子就有一个人取了这堆,逆推至初始状态与“否则”矛盾,不成立。

    只需判断总石子数奇偶即可。

    #include<cstdio>
    #include<iostream>
    using namespace std;
    int T,n;
    int a[1005],maxn,pos,sum;
    int main(){
    	scanf("%d",&T);
    	while(T--){
    		scanf("%d",&n);
    		sum=0,maxn=0,pos=0;
    		for(int i=1;i<=n;i++){
    			scanf("%d",&a[i]);
    			if(maxn<a[i]){
    				maxn=a[i];
    				pos=i;
    			}
    		}
    		for(int i=1;i<=n;i++){
    			if(i==pos) continue;
    			sum+=a[i];
    		}
    		if(a[pos]>sum){
    			printf("T
    ");
    		}
    		else{
    			if((sum+a[pos])&1) printf("T
    ");
    			else printf("HL
    ");
    		}
    	}
    	return 0;
    }
    
  • 相关阅读:
    64_q2
    64_q1
    64_p10
    64_p9
    64_p8
    64_p7
    64_p6
    64_p5
    64_p4
    64_p3
  • 原文地址:https://www.cnblogs.com/New-ljx/p/15358145.html
Copyright © 2011-2022 走看看