先对$n$分奇偶两种情况考虑——

$n$为奇数,显然先手希望最终产生的$x_{1}\oplus x_{2}\oplus...\oplus x_{n}=0$

对于后手,考虑构造:将最大的未被选择的$a_{k}$放在最大的$x_{t}$上,很明显除去先手的第一个以外,后手的每一次都比先手的下一次放的数大

设$a_{k}$为先手第一个取的位置,即必然有$x_{t}-a_{k}\ge \sum_{i=1}^{n}a_{i}-a_{k}-x_{t}$,即$x_{t}>\sum_{i=1}^{n}a_{i}-x_{t}$

而$x_{1}\oplus x_{2}\oplus...\oplus x_{n}=0$当且仅当$x_{t}=x_{1}\oplus x_{2}\oplus...x_{t-1}\oplus x_{t+1}...\oplus x_{n}\le \sum_{i=1}^{n}a_{i}-x_{t}<x_{t}$,因此后手必胜

$n$为偶数,显然先手希望最终产生的$x_{1}\oplus x_{2}\oplus...\oplus x_{n}>0$

对于先手,类似上述后手的构造,那么有$x_{t}\ge \sum_{i=1}^{n}a_{i}-x_{t}$

最终异或能为0的必要条件是$x_{t}=\sum_{i=1}^{n}a_{i}-x_{t}$,同时在这样的情况下,必然是$a_{i}$成对出现,后手可以模仿先手的操作使得异或为0,因此此时后手必胜

 1 #include<bits/stdc++.h>
2 using namespace std;
3 map<int,int>mat;
4 int t,n,a[100005];
5 int main(){
6 scanf("%d",&t);
7 while (t--){
8 scanf("%d",&n);
9 for(int i=1;i<=n;i++)scanf("%d",&a[i]);
10 if (n&1)printf("Second\n");
11 else{
12 mat.clear();
13 int flag=0;
14 for(int i=1;i<=n;i++){
15 mat[a[i]]^=1;
16 flag+=2*mat[a[i]]-1;
17 }
18 if (flag)printf("First\n");
19 else printf("Second\n");
20 }
21 }
22 }

[atARC105D]Let's Play Nim的更多相关文章

  1. [LeetCode] Nim Game 尼姆游戏

    You are playing the following Nim Game with your friend: There is a heap of stones on the table, eac ...

  2. CodeForces - 662A Gambling Nim

    http://codeforces.com/problemset/problem/662/A 题目大意: 给定n(n <= 500000)张卡片,每张卡片的两个面都写有数字,每个面都有0.5的概 ...

  3. HDU 5795 A Simple Nim 打表求SG函数的规律

    A Simple Nim Problem Description   Two players take turns picking candies from n heaps,the player wh ...

  4. LeetCode 292. Nim Game

    Problem: You are playing the following Nim Game with your friend: There to stones. The one who remov ...

  5. 【SRM】518 Nim

    题意 \(K(1 \le K \le 10^9)\)堆石子,每堆石子个数不超过\(L(2 \le 50000)\),问Nim游戏中先手必败局面的数量,答案对\(10^9+7\)取模. 分析 容易得到\ ...

  6. HDU 2509 Nim博弈变形

    1.HDU 2509  2.题意:n堆苹果,两个人轮流,每次从一堆中取连续的多个,至少取一个,最后取光者败. 3.总结:Nim博弈的变形,还是不知道怎么分析,,,,看了大牛的博客. 传送门 首先给出结 ...

  7. HDU 1907 Nim博弈变形

    1.HDU 1907 2.题意:n堆糖,两人轮流,每次从任意一堆中至少取一个,最后取光者输. 3.总结:有点变形的Nim,还是不太明白,盗用一下学长的分析吧 传送门 分析:经典的Nim博弈的一点变形. ...

  8. Nim游戏

    目前有3堆石子,每堆石子个数也是任意的,双方轮流从中取出石子,规则如下:1)每一步应取走至少一枚石子:每一步只能从某一堆中取走部分或全部石子:2)如果谁不能取谁就失败. Bouton定理: 必败状态当 ...

  9. HDU 3032 Nim or not Nim (sg函数)

    加强版的NIM游戏,多了一个操作,可以将一堆石子分成两堆非空的. 数据范围太大,打出sg表后找规律. # include <cstdio> # include <cstring> ...

随机推荐

  1. 试题 历届试题 核桃的数量 java题解

    资源限制 时间限制:1.0s   内存限制:256.0MB 问题描述 小张是软件项目经理,他带领3个开发组.工期紧,今天都在加班呢.为鼓舞士气,小张打算给每个组发一袋核桃(据传言能补脑).他的要求是: ...

  2. Scrum Meeting 0423

    零.说明 日期:2021-4-23 任务:简要汇报两日内已完成任务,计划后两日完成任务 一.进度情况 组员 负责 两日内已完成的任务 后两日计划完成的任务 qsy PM&前端 完成引导页UI# ...

  3. [no code][scrum meeting] Beta 11

    $( "#cnblogs_post_body" ).catalog() 例会时间:5月26日11:30,主持者:肖思炀 下次例会时间:5月27日11:30,主持者:乔玺华 一.工作 ...

  4. 第4次 Beta Scrum Meeting

    本次会议为Beta阶段第4次Scrum Meeting会议 会议概要 会议时间:2021年6月4日 会议地点:「腾讯会议」线上进行 会议时长:0.5小时 会议内容简介:对完成工作进行阶段性汇报:对下一 ...

  5. [对对子队]会议记录5.17(Scrum Meeting4)

    今天已完成的工作 何瑞 ​ 工作内容:实现选择组件,搭建第7关 ​ 相关issue:实现选择组件 ​ 相关签入:feature:完成Lv7的UI搭建 吴昭邦 ​ 工作内容:实现选择组件,搭建第7关 ​ ...

  6. redis中lua脚本的简单使用

    一.背景 在使用redis的过程中,发现有些时候需要原子性去操作redis命令,而redis的lua脚本正好可以实现这一功能.比如: 扣减库存操作.限流操作等等. redis的pipelining虽然 ...

  7. 状压dp学习笔记(紫例题集)

    P3451旅游景点 Tourist Attractions 这个代码其实不算是正规题解的(因为我蒟蒻)是在我们的hzoj上内存限制324MIB情况下过掉的,而且经过研究感觉不太能用滚动数组,所以那这个 ...

  8. 常用Java API:Math类

    求最值 最小值 Math.min(int a, int b) Math.min(float a, float b) Math.min(double a, doubleb) Math.min(long ...

  9. 个人宽带如何开启IPv6网络访问

    IPv6是大势所趋,就在前段时间湖南联通发布公告,对家庭宽带提供 IPv6 地址,不再提供 IPv4地址,那本文就介绍 个人宽带如何开启 IPv6网络访问. 湖南联通停止向普通家庭宽带用户提供公网 I ...

  10. 深入了解Mybatis架构设计

    架构设计 我们可以把Mybatis的功能架构分为三层: API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库.接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理. ...