[agc010D]Decrementing-[。。。思考题]
Description
Solution
真是够神秘的啊。。。
Alice和Bob两个真的城会玩。
不过本题一个暗示挺明显的。就是黑板上所有数不论何时gcd为1。
考场上我以为会很复杂,结果。。是我想多了qaq,人家就是用来判断奇偶性的。
由于gcd为1,黑板上必定有一个数为奇数。
假如n个数中偶数的个数为奇数,则先手必胜。
先手可以将一个偶数变成奇数,然后后手做什么,就做对应的策略。(后手奇->偶,先手就偶->奇;后手偶->奇,先手还偶->奇)。
因为我们保证在后手操作的时候偶数个数一定是偶数(好绕的说),所以不论什么时候先手都有对应的策略(如果后手动了偶数,肯定还有一个偶数给先手操作呢)。然后1是奇数,所以最后动不下去的肯定是后手啦。
然后,假如黑板上偶数的个数为偶数,并且奇数的个数>1,则先手不管怎么动都会使得偶数个数为奇数,然后。。后手就稳赢了(参考上文)
那如果奇数的个数为1呢?如果这个奇数本身就为1,先手肯定动不了它,那情况同上;如果奇数本身不为1,那就递归求解吧哈哈哈。。(反正也也递归不了多少次,每次所有数最少/2呢)
Code
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int n,a[],cnt=,id;
int gcd(int a,int b){if (!b) return a;return gcd(b,a%b);}
bool dfs()
{
id=-;cnt=;
for (int i=;i<=n;i++) if (!(a[i]&)) cnt++;else if (a[i]!=) id=i;
if (cnt&) return ;
if (cnt!=n-||(cnt==n-&&id==-)) return ;
a[id]--;int g=a[id];
for (int i=;i<=n;i++) g=gcd(g,a[i]);
for (int i=;i<=n;i++) a[i]/=g;
return !dfs();
}
int main()
{
scanf("%d",&n);
for (int i=;i<=n;i++) scanf("%d",&a[i]);
printf("%s",dfs()?"First":"Second");
}
[agc010D]Decrementing-[。。。思考题]的更多相关文章
- NOIp2018模拟赛三十六
好久没打模拟赛了...今天一样是两道国集,一道bzoj题 成绩:13+0+95=108 A题开始看错题了...导致样例都没看懂,结果xfz提醒我后我理解了一个我自认为正确的题意(事实证明我和xfz都错 ...
- AtCoder刷题记录
构造题都是神仙题 /kk ARC066C Addition and Subtraction Hard 首先要发现两个性质: 加号右边不会有括号:显然,有括号也可以被删去,答案不变. \(op_i\)和 ...
- 【AGC010D】Decrementing
Solution 日常博弈论做不出来. 首先,数值全部为1的局面先手必败. 在接下来的过程中,我们只关注那些大于1的数值. 按照官方题解的思路,首先想一个简化版的问题:没有除的操作,其余相同.那么局面 ...
- 复旦高等代数 I(16级)思考题
思考题的说明 一.本学期高代I的思考题面向16级的同学,将不定期地进行更新; 二.欢迎16级的同学通过微信或书面方式提供解答图片或纸质文件给我,优秀的解答可以分享给大家: 三.请大家先独立解答思考题, ...
- 复旦高等代数 II(15级)思考题
1.设 $f(x)=x^n+a_{n-1}x^{n-1}+\cdots+a_1x+a_0$ 是整系数首一多项式, 满足: $|a_0|$ 是素数且 $$|a_0|>1+\sum_{i=1}^{n ...
- Pair Project: Elevator Scheduler [电梯调度算法的实现和测试]:思考题——谢勤政11061197
第一题: 大楼里面的电梯一般分区域,或考虑思考题第四题的情况,运行楼层不一样的电梯属于不同的区域.然后在接口IRequest和IPassenger还有IElevator里面都加上int area这个属 ...
- 思考题:用Use Case获取需求的方法是否有什么缺陷,还有什么地方需要改进?(提示:是否对所有的应用领域都适用?使用的方便性?.......)
思考题: 用Use Case获取需求的方法是否有什么缺陷,还有什么地方需要改进?(提示:是否对所有的应用领域都适用?使用的方便性?.......) 简答: 一.用例解释: 在软件工程中,用例是一种在开 ...
- AGC010 - D: Decrementing
原题链接 题意简述 给出一个个数的序列,足够聪明的AB两人轮流进行以下操作: 令一个大于1的数减1,然后所有数除以. 如果一个人不能操作了,那么他就输了. 输入保证所有数都是正整数并且. 分析 这是一 ...
- 前端基本知识(三):JS的闭包理解(第一个思考题有错误,已修改)
JS闭包的理解 一.变量的作用域 二.如何从外部读取局部变量 三.什么是闭包 四.深入理解闭包 五.闭包的用途 六.使用闭包注意情况 七.JavaScript的垃圾回收机制 八.一些思考题 一.变量作 ...
随机推荐
- 《梦断代码》读书笔记 part3
第六章:搞掂设计方案 备份很重要. 必须从小项目开始,而且永远不要期望它变大,如果你这么想,就会做过度设计,把它想象得过于重要,更坏的情况是,你可能会被自己想象中的艰难工作所吓到.所以要从小 处起步, ...
- chrome浏览器Network面板请求Timing分析
Timing显示资源在整个请求生命周期过程中各部分话费的时间. Queueing 排队的时间花费.可能由于该请求被渲染引擎认为是优先级比较低的资源(图片).服务器不可用.超过浏览器并发请求的最大连接数 ...
- jq双日历--最终版(功能兼容IE5,样式兼容IE6)
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- Codeforces Round #440 (Div. 2)【A、B、C、E】
Codeforces Round #440 (Div. 2) codeforces 870 A. Search for Pretty Integers(水题) 题意:给两个数组,求一个最小的数包含两个 ...
- 1、Python代码初识
由于python2.7版本默认使用的是ASCII码,必须在编写前加入两行代码,表示使用UTF-8码. #!/usr/bin/python # -*- coding:utf-8 -*- print('你 ...
- [Python 多线程] GIL全局解释器锁 (十三)
Queue 标准库queue模块,提供FIFO(先进先出)的Queue.LIFO(后进先出)的队列.优先队列. Queue类是线程安全的,适用于多线程间安全的交换数据.内部使用了Lock和Condit ...
- matplotlib.pyplot的两种模式
在交互模式下: 1.plt.plot(x)或plt.imshow(x)是直接出图像,不需要plt.show() 2.如果在脚本中使用ion()命令开启了交互模式,没有使用ioff()关闭的话,则图像会 ...
- HDU 1198 Farm Irrigation(并查集,自己构造连通条件或者dfs)
Farm Irrigation Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- Linux下gdb调试(tui)
1 处于TUI模式的GDB 为了以TUI模式运行GDB,可以在调用GDB时在命令行上指定-tui选项,或者处于非TUI模式时在GDB中使用Ctrl+X+A组合键.如果当前处于TUI模式,后一种命令方式 ...
- CSS网页布局:盒子模型
一.盒子模型 标准盒子模型(W3C盒子) 不论是标准盒模型还是IE盒子模型,都有content.padding.border.margin四个部分组成,但从上图也可以看出W3C盒子和IE盒子主要区别在 ...