%%神仙题

首先转化一波模型:可以把原问题看成,初始每个位置有0/1个石子,1操作看成从一个位置拿走一个石子,2操作看成从l[i]拿走一个石子,并在[ l[i]+1 , r[i] ]的每个位置放上一个石子。然后在这上面进行游戏,不能操作者输。。。。

为什么可以这么转化呢QWQ

最后显然每个位置都不能剩石子,不然是可以接着操作的。。。。。

然后如果一个位置有偶数个石子的话最后的nim和里是会消去的,所以符合了 原位置是0就不能操作。。。

所以直接倒着推一遍nim和就好啦。。。

#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>
#include<iostream>
#include<cmath>
#include<vector>
#define ll long long
using namespace std;
#define pb push_back
const int maxn=1e6+5;vector<int> g[maxn];
int n,v[maxn],dc,sg[maxn],ans,m;
bool c[maxn];inline int read(){int x=0; char ch=getchar();for(;!isdigit(ch);ch=getchar());for(;isdigit(ch);ch=getchar()) x=x*10+ch-'0';return x;
}int main(){
//  freopen("game.in","r",stdin);
//  freopen("game.out","w",stdout);n=read(),m=read();for(int i=1;i<=n;i++) c[i]=read();int L,R;for(int i=1;i<=m;i++) L=read(),R=read(),g[L].pb(R);for(int i=n,now;i;i--){now=1,dc++;for(int j:g[i]) v[sg[i+1]^sg[j+1]]=dc;while(v[now]==dc) now++;sg[i]=now^sg[i+1];}for(int i=1;i<=n;i++) if(c[i]) ans^=sg[i]^sg[i+1];if(ans) puts("First");else puts("Second");return 0;
}

转载于:https://www.cnblogs.com/JYYHH/p/9192305.html

「2018山东一轮集训」Game相关推荐

  1. 「2018山东一轮集训」 Tree

    为什么出题人这么毒瘤啊??!!一个分块还要带log的题非要出成n<=2*1e5....... 为了卡过最后两个点我做了无数常数优化,包括但不限于:把所有线段树改成 存差分的树状数组:把树剖求LC ...

  2. #6073. 「2017 山东一轮集训 Day5」距离(树链剖分 + 永久标记主席树)

    #6073. 「2017 山东一轮集训 Day5」距离 给定一颗有nnn个节点带边权的树,以及一个排列ppp,path(u,v)path(u, v)path(u,v)为u,vu, vu,v路径上的点集 ...

  3. Loj #6077. 「2017 山东一轮集训 Day7」逆序对

    Loj #6077. 「2017 山东一轮集训 Day7」逆序对 Solution 令fi,jf_{i,j}fi,j​表示前iii个数产生jjj个逆序对的方案数,每次考虑把i+1i+1i+1加入,有i ...

  4. 容斥问卷调查反馈——Co-prime,Character Encoding,Tree and Constraints,「2017 山东一轮集训 Day7」逆序对

    文章目录 Co-prime source solution code Character Encoding source solution code Tree and Constraints sour ...

  5. LOJ#6072. 「2017 山东一轮集训 Day5」苹果树 解题报告

    LOJ#6072. 「2017 山东一轮集训 Day5」苹果树 解题报告 好苹果会组成连通块,整棵树的权值为 ∑ i = 1 n c i [ c i ≥ 0 ] [ s i z n u m ( c i ...

  6. LOJ#6074. 「2017 山东一轮集训 Day6」子序列

    LOJ#6074. 「2017 山东一轮集训 Day6」子序列 先考虑全局询问怎么做,设 f ( i , c ) f(i,c) f(i,c) 表示在 S 1 ⋯ i S_{1\cdots i} S1⋯ ...

  7. LOJ#6103. 「2017 山东二轮集训 Day2」第一题 解题报告

    LOJ#6103. 「2017 山东二轮集训 Day2」第一题 解题报告 前置知识:闭区间上的连续函数的零点存在性定理: 我们定义这样的函数: 定义域为 [ l , r ] ∩ Z [l,r]\cap ...

  8. LOJ6079「2017 山东一轮集训 Day7」养猫

    养ImmortalCO k可重区间问题 的增强版:有上下界! 直接都选择s[i],然后再把一些调整到e[i] 考虑通过最大流的"最大",使得至少每k个有me个e, 通过最大流的&q ...

  9. 「2017 山东一轮集训 Day5」距离

    /* 写完开店再写这个题目顿时神清气爽, 腰也不疼了, 眼也不花了首先考虑将询问拆开, 就是查询一些到根的链和点k的关系根据我们开店的结论, 一个点集到一个定点的距离和可以分三部分算 那么就很简单了吧 ...

最新文章

  1. Android 内容提供器---内容提供器基础(内容的统一资源标识(URIs))
  2. PostgreSQL 10.1 手册_部分 II. SQL 语言_第 11 章 索引_11.5. 组合多个索引
  3. 前端学习(1913)vue之电商管理系统电商系统之创建user分支并把代码推到码云
  4. 机器学习代码实战——网格搜索和交叉验证(GridSearchCV)
  5. [转]《精通Javascript》笔记:第六章(事件)
  6. Vue3中的父子、子父组件通信
  7. 无法打开预编译头文件的解决方法及预编译头原理[ZZ] 转
  8. iphone型号表_iPhone手机型号信息大全 (最新)
  9. 北风网Ant+Java视频课程
  10. 色彩特征提取-色彩属性HSV空间
  11. java 随机生成人员姓名
  12. APK 签名:v1 v2 v3 v4
  13. python之路金角大王_Python 之路03 - Python基础3
  14. jquery实现滑动滚动条出现对联广告
  15. TICKScript简介
  16. 【数据结构入门】算法的时间复杂度和空间复杂度详解
  17. 适合装u盘的linux系统下载软件,ghost xp系统镜像安装win7系统下载地址适合装u盘的linux...
  18. Codeforces Round #666(Div. 2)E. Monster Invaders(DP)
  19. 【退役记】NOI2022
  20. linux安装TensorFlow-GPU版本 非常详细安装必看

热门文章

  1. liunx从界面模式改到命令行模式
  2. Ring3下Inline Hook API
  3. 《Linux内核设计与实现》读书笔记(十五)- 进程地址空间(kernel 2.6.32.60)
  4. ARM中Steppingstone启动
  5. tensorflow实现梯度累计,再回传
  6. C++ stringstream 实现字符与数字之间的转换
  7. jupyter notebook_远程终端访问(win11 / ECS云服务器)
  8. 1-冒泡排序C实现(递增递减的简单转换)
  9. 8086汇编常用指令(待解释)
  10. Excel打印区域设置