玩游戏【博弈】

玩游戏

Description

 

zxy和wfy用几堆石子在做游戏。偶数堆石子排成一行,每堆都有正整数颗石子 a[i]a[i]a[i] 。游戏以谁手中的石子最多来决出胜负。石子的总数是奇数,所以没有平局。zxy和wfy轮流进行,wfy先开始。 每回合,玩家从一行的开始或结束处取走整堆石头。 这种情况一直持续到没有更多的石子堆为止,此时手中石子最多的玩家获胜。假设zxy和wfy都发挥出最佳水平,当zxy赢得比赛时输出“zxy” ,当wfy赢得比赛时输出“wfy”。

 

Input

 

有T组输入,每个输入后有一个nnn,在nnn后有nnn个数字,a1,a2....ana_1,a_2....a_{n}a1​,a2​....an​。
n的范围是1≤n≤1e51\leq n\leq1e^51≤n≤1e5,1≤ai≤1e51\leq a_i\leq1e^51≤ai​≤1e5.

 

Output

 

输出胜利者的名字"zxy"或者"wfy"

 

Sample Input 1

1
4
5 3 4 5

Sample Output 1

wfy

Hint

wfy先开始,只能拿前 5 颗或后 5 颗石子 。
假设他取了前 5 颗,这一行就变成了 [3,4,5] 。
如果zxy拿走前 3 颗,那么剩下的是 [4,5],wfy拿走后 5 颗赢得 10 分。
如果zxy拿走后 5 颗,那么剩下的是 [3,4],wfy拿走后 4 颗赢得 9 分。
这表明,取前 5 颗石子对wfy来说是一个胜利的举动,所以我们输出wfy 。

因为wfy先手,都要取最利于自己的选择(不一定是最多的,比如 5 8 3 3),(共有偶数堆石头),所以wfy一定会赢。。。。。。

#include<iostream>
using namespace std;
int main(){
  	int t;
  cin>>t;
 while(t--){
 int n;
 int b;
  for(int i=1;i<=n;i++)
    cin>>b;
	cout<<"wfy"<<endl;
 
 }
  

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值