微众前端 编程题 AC的同学帮忙看看思路哪里不对?
发布于 2017-04-25 21:08 2115 次浏览 0 赞 来自 笔试面试  

题目如下

装卸竞赛 

时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB

题目描述:

B和小C负责一个货场中货物的装卸工作。货场中的货物实行分区管理,一共有n个分区,每个分区中有满载货物的mi辆货车(1=< i <=n)。第i个分区中的第一辆货车中有xi件货物,第二辆中有xi+1件货物,第三辆有xi+2件货物,以此类推,第mi辆车中有xi+mi-1件货物。

最近货场生意较为红火,老板为提升卸货效率,设置了高额的奖励。为确保拿到奖金,小B和小C展开了卸货比赛,并设定了卸货的规则。两人轮流从货车中卸货,每次两人可以选择一辆车并从中卸下若干件货物(大于0件),第一个无货可取的人将失去奖金。

B迫切希望能够赢得比赛,她和小C都非常聪明,所以每人每次都会选择最优的数量卸货。先开始卸货的人为first,后开始卸货的为second,她希望你帮她看看谁能够赢得比赛,以便决定选择是先手还是后手。你能帮助她吗?

输入

测试数据有多组,每组测试数据的第一行为一个整数n1=< n <=10^5),表示货物分区数。随后的n行中每行有两个空格分隔的整数ximi1=<xi, mi <=10^16),表示第i个分区里第一辆货车上货物的数量以及该区中货车的数量。

输出

对每组测试数据,若先开始卸货的能赢,则在单独的行中输出first,否则输出second

 

样例输入

2

2 1

3 2

4

1 1

1 1

1 1

1 1

样例输出

first

second

解题

判断每一组数据的每个区的货物总和如果是奇数 FIRST

否则对每个区每个车的货物数量设为一个数组,对数组的每个数字求XOR,如果为0则为FIRST否则为SECOND

这道题是NIM游戏吗 

添加回复
回到顶部