john的游戏

john的游戏

 

Description

john发明了一个好玩的游戏,叫mike一起玩. 
这个游戏是这样的,john先写下一排数。既然是一排,当然有首尾咯。
john和mike每次只能从这排数的头或尾取一个数。
最后谁取的数的和多,谁就赢了。如果两人的和一样多,先取者胜。
现在你的任务就是判断在两人总是做出最优决策的情况下(两个人的智商都是很高的……),
谁能取得最终的胜利呢?

Input

第一行为一个数k(k<=10),表示有k组测试数据。 
以下k组测试数据。
每组测试数据中,第一行仅有一个偶数n(0 < n <= 100000 )
第二行也仅有一个数,1表示john先取数,0表示mike先取数.
第三行有n个数,是john给出的一排数。这n个数的绝对值均不超过1e6.

Output

对每组测试数据输出一行 
表示在两人总是做出最优决策的情况下,
最终的胜利者的名字,即"john"或"mike"(引号不输出)。

Sample Input

2
2
1
1 3
2
0
1 3

Sample Output

john
mike

分析:
这道题初一看,挺复杂的,要比较选择对自己有利,对对手相对不利的数,可能会用到动归,那就真的想复杂了
其实这是一道水题,仔细看,先手其实可以一直选择偶数位或奇数位,当他选择偶数位,那留给对手的就只是奇数位了,反过来一样
也就是说,如果奇数位和大的话,先手就一直选择奇数位的数就行了;偶数同理。
即谁是先手,谁就一定赢
简单代码如下:
# include<stdio.h>
int str[100005];
int main()
{
    int nCase, num, sign, i;
    scanf("%d", &nCase);
    while(nCase--)
    {
        scanf("%d", &num);
        scanf("%d", &sign);
        for(i = 0; i < num; i++)
        {
            scanf("%d", &str[i]);
        }
        if(sign == 1)
            printf("lolanv\n");
        else 
            printf("wind\n");
    }
    return 0;
}

 

posted on 2012-11-01 16:11  即为将军  阅读(723)  评论(0)    收藏  举报

导航