[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的垃圾回收机制 八.一些思考题 一.变量作 ...
随机推荐
- POI读取单元格信息及单元格公式
Java操作EXCEL的利器一般都是POI和JXL,鄙人只是POI的忠实粉丝.(其实我是没有用过JXL). 现在大多数的excel都是07以上的版本,所以我一般是用07的基础上使用POI. 一.读取单 ...
- IOS 登录信息类(使用单例)
WCUserInfo.h #import <Foundation/Foundation.h> #import "Singleton.h" @interface WCUs ...
- android--eclipse闪退,无法启动
解决方法: 删除文件:[workspace]/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi
- 大屏FAQ
1. 大屏可以分为哪几类?帆软有哪些大屏硬件合作商?编辑 拼接屏:通常由单个46-55寸的液晶显示屏组成屏幕墙,存在拼缝,借助矩阵.屏控系统来进行信号的输入与输出控制,可以实现屏幕墙上多个屏幕的组合. ...
- Odoo工作流
转载请注明原文地址:https://www.cnblogs.com/cnodoo/p/9281264.html 一:工作流 工作流是与业务流程相关联的模型,可用于跟踪工序的动态演变过程. 工作流.活动 ...
- 【node.js】事件循环、EventEmitter
Node.js 是单进程单线程应用程序,但是通过事件和回调支持并发,所以性能非常高. Node.js 的每一个 API 都是异步的,并作为一个独立线程运行,使用异步函数调用,并处理并发. 事件驱动程序 ...
- 【jQuery】deferred对象了解
deferred对象就是jQuery的回调函数解决方案,在英语中,defer的意思是"延迟",所以deferred对象的含义就是"延迟"到未来某个点再执行. 它 ...
- robotframwork数据库测试(一)——pymysql与pyodbc
本章节仅总结一下使用pymysql与pyodbc链接MySQL数据库. 2个都可以链接mysql数据,进行增删改查.但是呢,使用pyodbc操作数据库,对中文支持度好一些.pymysql则需要处理一下 ...
- Kubernetes(一)--简介
一.什么是kubernetes(K8s)? Kubernetes作为容器编排生态圈中重要一员,是Google大规模容器管理系统borg的开源版本实现,吸收借鉴了google过去十年间在生产环境上所学到 ...
- 8. DBNEWID 工具(使用nid命令修改db name及dbid)
以下参考自:https://www.2cto.com/database/201305/207860.html Oralce官网:https://docs.oracle.com/cd/E11882_01 ...