EOJ——2019.9月赛 A 才艺展示 (博弈+打表找规律)

题目链接:https://acm.ecnu.edu.cn/contest/196/problem/A/

题目:

 解题报告:

  由于必胜点是 n,所以 n 点的必胜状态为yes(走到这个点的人必胜),考虑 n-1 到 n/2+1 这一段(因为这一段都无法整除),所以 i 点的状态可以由i+1得到,接着从再从n/2推到1,由于有两种取法,所以对于当前状态 i,如果 i+1或者 2*i 的状态(这两点的状态前面已经推出来了),有一个为yes,那么这个 i 点的状态就为no(因为前面是由两者取最优的决策得出的),因为我走到这里,另一个玩家就可以从这里开始转移到下一个他必胜的状态。

  所以由前面的结论,将Cuber QQ Win赢的情况的前10000项打表O(n)后,发现表中每个偶数项都能被8整除,奇数项能通过前一个偶数项+2得到。

  打表代码:

 1 #include<bits/stdc++.h>
 2 #define numm ch-48
 3 using namespace std;
 4 template <typename T>
 5 void read(T &res) {
 6     bool flag=false;char ch;
 7     while(!isdigit(ch=getchar())) (ch==‘-‘)&&(flag=true);
 8     for(res=numm;isdigit(ch=getchar());res=(res<<1)+(res<<3)+numm);
 9     flag&&(res=-res);
10 }
11 template <typename T>
12 void write(T x) {
13     if(x<0) putchar(‘-‘),x=-x;
14     if(x>9) write(x/10);
15     putchar(x%10+‘0‘);
16 }
17 typedef pair<int,int> pi;
18 typedef long long ll;
19 const int maxn=10010;
20 int a[maxn];
21 int main()
22 {
23     int n;
24     #define local
25     #ifdef local
26         freopen("1.txt","w",stdout);
27     #endif
28
29     #define p1 puts("Little Fang Win")
30     #define p2 puts("Cuber QQ Win")
31     for(int j=2;j<=10000;j++) {
32         n=j;
33         if(n==1) {
34             p1;
35             continue;
36         }
37         if(n%2) {
38             a[n]=1;
39             n--;
40             a[n]=0;
41             for(int i=n-1;i>n/2&&i>1;i--)
42                 if((n-i)%2) a[i]=1;
43                 else a[i]=0;
44         }
45         else {
46             a[n]=1;
47             for(int i=n-1;i>n/2&&i>1;i--)
48                 if((n-i)%2) a[i]=0;
49                 else a[i]=1;
50
51         }
52         for(int i=n/2;i>1;i--)
53             a[i]=max(a[i*2],a[i+1])?0:1;
54         if(a[2]) write(j),cout<<"->",p2;
55     }
56     return 0;
57 }

代码在这里!

  然后将偶数项除以8拿出来,发现有规律的(其实口述不好说),序列是1,4,5,16,17,20,21,64,65,68,69,80,81,84,85。规律就自己看了,然后用vector打表发现存不下,后来写个算法把n往1推,发现4234这个数行不通,赛后看题解是有关二进制的,只要所有奇数位都为0,那么就是Cuber QQ Win,反之Little Fang Win,懵逼国有懵逼路,懵逼树旁懵逼树,懵逼树下只有我...

  AC代码:

 1 #include<bits/stdc++.h>
 2 #define numm ch-48
 3 using namespace std;
 4 template <typename T>
 5 void read(T &res) {
 6     bool flag=false;char ch;
 7     while(!isdigit(ch=getchar())) (ch==‘-‘)&&(flag=true);
 8     for(res=numm;isdigit(ch=getchar());res=(res<<1)+(res<<3)+numm);
 9     flag&&(res=-res);
10 }
11 template <typename T>
12 void write(T x) {
13     if(x<0) putchar(‘-‘),x=-x;
14     if(x>9) write(x/10);
15     putchar(x%10+‘0‘);
16 }
17 typedef long long ll;
18 #define p1 puts("Little Fang Win")
19 #define p2 puts("Cuber QQ Win")
20 int main()
21 {
22     int _;
23     ll n;
24     read(_);
25     while(_--) {
26         read(n);
27         bitset<64>b(n);
28         bool flag=false;
29         for(int i=0;i<63;i+=2)
30             if(b[i]) {
31                 p1;
32                 flag=true;
33                 break;
34             }
35         if(!flag) p2;
36     }
37     return 0;
38 }

代码在这里!

原文地址:https://www.cnblogs.com/wuliking/p/11478572.html

时间: 2024-11-06 03:52:10

EOJ——2019.9月赛 A 才艺展示 (博弈+打表找规律)的相关文章

孩子才艺学习为什么要慎重选择?

半数以上父母自行决定让孩子的才艺课,很少征求孩子的想法.时下家长帮孩子安排的才艺课仍以功能性.培养智育方面的居多.究竟父母应该怎样合理地为孩子选择才艺课程呢? 案例一: 一位爸爸在女儿学钢琴时,先和老师沟通好,上课无需赶进度,如果别家孩子一星期学一首新曲子,就让他女儿可以花一个月还在弹同一首,因为他不求女儿上台演奏,赢得掌声,也没有要她们未来成为演奏家,只是希望她们能欣赏音乐. 案例二: 一位妈妈让女儿去学跳舞,每周坚持,因此花费的时间和金钱都不少.在妈妈的严厉监督下女儿学了一年多,舞蹈技巧学了

FOJ有奖月赛-2016年8月 Problem A Daxia &amp; Wzc&#39;s problem(找规律)

Problem A Daxia & Wzc's problem Accept: 42    Submit: 228Time Limit: 1000 mSec    Memory Limit : 32768 KB Problem Description Daxia在2016年5月期间去瑞士度蜜月,顺便拜访了Wzc,Wzc给他出了一个问题: Wzc给Daxia等差数列A(0),告诉Daxia首项a和公差d; 首先让Daxia求出数列A(0)前n项和,得到新数列A(1); 然后让Daxia求出数列A(

解决前台展示的R表出数据太慢的方法

解决前台展示的R表出数据太慢的方法第一种方法1.业务逻辑处理后插入 _bak表 2._bak表 纯插入 R表 最后只剩 _bak表,R表 第二种方法1.业务逻辑处理后插入 dm表 2.dm表 纯插入 tmp表 2.R表 重命名为 _bak表 3.tmp表 重命名为 R表 4._bak表 重命名为 tmp表 最后只剩 dm表 ,tmp表,R表 总结: 重命名可能比插入更快,但包体可能因为重命名后表不存在而报错.如果不报错,第2种方法更快. 原文地址:https://www.cnblogs.com/

Easyui 实现点击不同树节点打开不同tab页展示不同datagrid表数据设计

实现点击不同树节点打开不同tab页展示不同datagrid表数据设计 by:授客 QQ:1033553122 测试环境 jquery-easyui-1.5.3 需求描述 如上图, 1.点击左侧树,叶子节点,打开不同的tab页,加载与节点对应的表数据 2.在上述打开页面中,进行新增,编辑,复制等操作,确保新增.复制等操作生成的数据只在该页面可见. 涉及思路与关键代码 1.单击左侧树时,叶子节点时,新增.激活一个tab页,打开.激活之前,设置tab页id属性值为树节点的ID,设置title属性为节点

数据仓库展示模型 - 维度表与事实表的理解

一.事实表 特点: 1. 由一组表示维度的键和一组数字形式的度量值构成. 2. 维度外键通常是一些数字或字符代码,因为通常事实表会包含极大的数据量,如果直接使用维度描述的话,会对存储性能照成影响. 3. 每个度量值都是单独的一列,创建报表时(例如BIEE中数据透视表),度量值也可以作为维度来使用. 教工人数 单位ID(维度1) 学科码(维度2) 年度(维度3) 在编教工数(度量1) 在编教学科研人数(度量2) 1 0801 2013 101 89 2 0802 2013 102 77 3 070

2019的应该和2018有重复的!!要全会,找规律

1. 协议是指在( )之间进行通信的规则或约定. .同一结点的上下层 B.不同结点 c.相邻实体 D.不同结点对等实体 2. 利用模拟通信信道传输数字信号的方法称为( A.同步传输 B.异步传输 cC. 基带传输 D.频带传输 3.用PCM对语音进行数字量化,如果将声音分为128个量化级,采样领率为 8000次秒,那么一路话音需要的数据传输率为( ).A.56kb/s B. 64kb/s C. 128kb/s D. 1024kb/s 4.以太网遵循IEEE 802.3标准,用粗缆组网时每段不能大

&quot;巴卡斯杯&quot; 中国大学生程序设计竞赛 - 女生专场(重现)解题思路

此文章可以使用目录功能哟↑(点击上方[+]) 经过这么一次女生赛,告诉我们千万不要小瞧女生,不然会死得很惨,orz... 链接→"巴卡斯杯" 中国大学生程序设计竞赛 - 女生专场(重现)  Problem 1001 Solving Order Accept: 0    Submit: 0 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit : 32768/32768 K (Java/Others)  Problem Descri

2019最火的直播平台有哪些?2019直播前十名排名

随着今年熊猫TV下课,直播行业重新洗牌,原熊猫的众多主播也纷纷转战,那么现在直播最火的平台是那些呢?现在就来盘点下2019年最火的直播平台前十名. 1.斗鱼直播 斗鱼直播一直站在直播行业前列,拥有着超高人气的大主播,yyf.旭旭宝宝.冯提莫以及新加入的pdd等,为其聚集了超强的人气,pdd在斗鱼首播时人气最高破5亿,却不是当年的gogoing虚假的59亿人气,如果没有去年上市前的一系列风波,如今只怕更加的庞大. 2.虎牙直播 当年从yy直播改名而来,将yy里的一系列游戏和其他直播分离出来,相比于

牛客小白月赛2 总结

随便找了牛客网上的一个比赛打,看了一会题目,很快就嘴巴AK了,突然有点小激动,最后发现牛客小白月赛就是手速场,题目难度在CF DIV2 A~C ,总共10题,一不小心又做了一波水题.(可惜嘴巴选手实际只敲了3题的代码,逃) A 数字方阵 构造题,打表找规律,或者随机,详见http://www.cnblogs.com/Surrender/p/8969880.html B 小马过河 解方程 C 真真假假 用map D 虚虚实实 欧拉路径 E 是是非非 nim游戏 F 黑黑白白 树上博弈,用最大.最小