zzuli 20级第六次周赛 2730 问题 H: 嘟嘟的“糖果”游戏

题目描述

嘟嘟是个爱吃糖的小孩。某一天嘟嘟的糖果吃完了,他想要去糖果店买糖果,正好遇到糖果店店长正在搞活动。
活动内容是跟店长玩一个游戏,赢了的话就能免费拿到糖果大礼包了,这可是买不到的那种稀有糖果。嘟嘟顿时兴奋了起来。
游戏的内容是这样的,店长的桌子上n 种糖果,每种糖果 Xi ( 1 ≤ i ≤ n ) 个。玩家跟店长双方轮流吃糖,一次吃一颗,谁最后没糖可吃就输了。
但是店长又加了一个条件,就是如果对方上一次吃了第 i 种糖果,则己方此次就不能吃第 i 种糖果(如果是游戏开局第一个人则可以吃任意种类的糖果)。并且店长总是先手。
聪明的嘟嘟看了下店长桌子上放的糖果,他知道糖果店老板是一个极度聪明的人,但是又不想放弃糖果大礼包,陷入了纠结。请你告诉嘟嘟,他能否有绝对的把握拿到糖果大礼包。

输入

第一行输入一个整数n,代表糖果种类。 第二行输入n个整数Xi,代表第i种糖果数量。 (1 ≤ n ≤104, 1 ≤ Xi ≤ 104)

输出

如果嘟嘟能赢得游戏拿下糖果大礼包,则输出"必拿下!",否则输出"可惜"。(输出不带双引号)

样例输入

3
1 2 1

样例输出

必拿下!

博弈论,判断总数是奇偶,偶数必赢。根据题目中的规则还需判断n是否大于1,和里面的最大值是否小于于总数的一半。如果都符合则能赢。(感谢大佬指出错误)

#include<bits/stdc++.h>
using namespace std;

int main(){
	int n, a,ans = 0, maxn = 0;
	cin>>n;	
	for(int i = 0; i < n; i++){
		cin>>a;
		maxn = max(maxn, a); 
		ans =ans +a;
	}
	if(ans % 2 == 0 && n > 1 && maxn <= ans / 2){
		cout<<"必拿下!";
	}else{
		cout<<"可惜";
	}
}
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值