CF博弈论题选㗅
呃,因为某场cf的时候和某场csp的时候不会猜结论炸开了,所以来找点题练习一下。
选题的方式是,加上filter,直接从上往下开(
大部分是㗅一下然后看题解。
filter: tags=games
按Rating升序。
959A : 智障题。
1398B : 这种贪心选取不会给对手带来好处的,可以直接贪心选。
832A : ?难道是Div.4 A题
1270A : 超长题面,智障做法
1373B : 智障结论 : 01串中只要有0又有1,那么一定有01相邻。
1419A : 既然两个人的操作互不影响,只要看谁决定最后剩下那个是什么就好了,如果在这个人能操作的数里面有留到最后会让她赢的数,那么她确实就赢了。
以下为Rating 1000及以上。
616B : ?这也配1000?
1365A : 因为每次操作只对一行一列而对其它地方没有影响,所以能放就放就好了,答案为空行和空列数的
1382B : 这题还不错。观察样例发现,先手有一个棒到不行的策略 : 每次取到只剩一个,这样后手必须取那一个,就可以保持先手;最后一次直接取完。
但是发现当遇到
现在想了想发现有两个问题 : 开头有连续的
对于开头,每个
对于结尾,先手还是有必胜策略 : 假设有
所以只要看开头连续
841B : 智障题。考虑如果先手能全取走那么就会全取走。如果不能全取走,也就是说总和是偶数,那就随便取点什么,取完之后总和会变成奇数,后手一定不能全取走。后手再随便取点什么(或者直接不能取了),总和还是奇数,这回先手一定全取走。所以如果先手第一步能取,那么先手一定获胜。
755B : 如果你玩过什么类似于飞花令的游戏,你应该想过,最优策略是先说都知道的,再说只有自己知道的。模拟即可。
705B : 这东西也挺智障,考虑每个东西
1102C : 如果砸的比修的厉害,那么显然可以全砸了;否则一次砸不坏的显然不可能砸坏了,一次能砸坏的,只要修一次也变成砸不坏的了,所以两个人轮流砸/修,答案是一开始一次能砸坏的数量的一半上取整。
1155B : 最后十位没有用,因为删最后十一位中的任何一个,都等价于删第十一个。所以问题变成最后能不能留下
914B : 考虑这个过程,发现如果最大的有
630R : 这题实在是非常经典(,然而太过经典所以只有1200)。考虑先手如果放在棋盘正中间,接下来每一步都放跟后手对称的,那么一定是后手先完蛋。如果
276B : 这题的获胜条件可以说成,逼着对手把它删成最多一个字母出现奇数次,并且其它字母出现偶数次。下面说的奇数偶数指的是出现奇数/偶数次的字母。那么我们先统计出奇数的数量
570B : 第一眼还真没想到是取
1220C : 题面你谷没有?题意 : 给一个字符串,现在有一个游戏,从一个区间
智障题。先手如果能扩展,直接一步扩展到不能扩展,那后手就没了。所以就是对每个字符看有没有字典序比它小并且包含它的。可以直接每个字符搞一个前缀和,看前面有没有比它小的字符。
257B : A肯定希望放跟上一个相同的,B希望不同的,那么我们只要枚举是先放红的还是蓝的,然后大力模拟即可。也可以更简单一点 : 考虑既然B放的是跟上一个不同的,一共可以放
下面是1400及以上的题。
1370C : 对于奇数,直接除自己,先手必胜。对于
546C : 这个小模拟被扔进games我能理解,但是1400是?
934A : 原来CF也有爆力题,但是这games是?并且那个最后一篇题解写的还是不错的。
150A : 智障题,分解质因数,一口气除到只剩一个。
1425A : 我不会做,官方题解说,如果是
120E : 跟上面的630R完全相同。
859C : 考虑dp,发现如果设dp[i][0/1]表示前
293A : 其实就是让
74B :
题意 :
S和C在一列火车上,火车有
如果火车不停,S可以选择移动到下一节车厢或上一节车厢。如果火车停了,S可以下车,然后移动到任意一节车厢。
不管火车停不停,C总是从起点向某个方向开始移动,每刻走一节车厢,直到走到车头或车尾,然后调头继续走,一直这样走下去(也就是,不停从一头走到另一头)。
规定同一时刻内,如果不停车,S先移动,C后移动;如果停车,S先下车,C再移动,S再上车。如果S和C在同一节车厢了,那么C就抓住了S。
求S能不能安全地在最后一站下车,如果不能,求出S最晚在第几刻被抓住。
输入格式 : 第一行三个数,表示火车的长度、S和C的初始位置;第二行表示C的初始方向;第三行表示火车在每一刻停不停车。
Solution : 考虑只有C把S按在一头S才完蛋,所以每次停车的时候走到C调头之前不会被C按死的那一边就好了。模拟即可。
以下是1600及以上的题。
1363C : 能删
346A : 一眼题,根据裴蜀定理,最后一定可以拼出所有最小和最大之间的可以表示为
197A : 这个结论出现三次了......先手能放那就放中间,肯定能赢。
493D : 很多这样的问题都可以考虑对称地走。对于奇数的情况,后手一直跟着走的话,容易发现先手必败。对于偶数的情况,先手先走到
1451D : 官方题解说的是,考虑设
如果
否则,不管先手怎么走,后手可以把她按在
1194D : 直接打表找规律。
1215D : 考虑先手的最优策略肯定是往更大的一边放
980C : 又一个假games,既然是字典序所以直接按位贪心即可,可以简单地记录一个区间来判断一个数还能往右覆盖多少。这里暴力的复杂度似乎也可以接受。
917B : 大力dp,设dp[u][v][c][0/1]表示现在A在
533C :
题意 : 有一个坐标系,A每次可以从
考虑如果A可以走到B左下方,B就不能走
1396B : 贪心地,我们希望每次拿最大的那一堆,这样更有可能多活一会,交上去发现过了。感性理解大概是,考虑如果一堆非常大以至于超过了一半,那么先手先拿它肯定能赢。所以如果有个人拿完了出现了这样一堆非常大的,他就输了,所以他不能这么做。贪心地,每次拿最大的就可以避免这种情况。
1190B : 考虑如果一开始有相同,那么先手必须操作相同的,否则他就开门红。如果操作完了还有相同,他就开门红。考虑没有相同的情况,容易想到最后的情况一定是类似于
3C : 这是一道小模拟,因为是上古场所以评到了1800。
148D : 经典概率dp。
794D : 考虑先手显然只会用到最小的一部分,后手只会用到最大的一部分,先手肯定想把小的往前放,后手也希望把大的往前放。有一个特例 : 先手手里最小的比后手手里最大的还要大,那么先手就会往后放,让后手把他手里最大的放到最前面。模拟即可。
55C : 考虑如果走到角上就赢了,而走到边上之前如果对手可以封锁四个角,那就输了,所以能赢当且仅当有棋子四步就能走到边上。
下面是棒到不行的1900及以上的题。
1404B : 感觉自己会一点猜结论了(考虑如果
455B : 这个f[u]=0/1表示
好了上面是错误做法,既然要进行很多轮,那么如果只进行一次的话,这个游戏先手必胜,两个人肯定都希望最后一轮自己是先手,反之亦然,所以我们在trie上分别dp出想赢和想输的情况,然后分类讨论即可。这确实是一道容易降智的题。
1383B : 好题,我不会。按位贪心,考虑如果这一位有偶数个
然后我们考虑后手模仿先手什么时候能赢。如果两个人轮流只拿
然后我们考虑
135C : 输出只可能是
考虑先手一定取
279E : 似乎不是博弈论而是纯构造?考虑对于末尾的一堆
717D : 先考虑Nim先手必胜当且仅当各堆
倍增优化即可,发复杂度
69D : 没太看懂题,据说是记搜?
388C : 简单dp,先对每一堆求出前缀和,然后设
好了以上是错误想法。考虑如果你想拿某一堆的一半(当然,下取整),那么你肯定能拿到。然后如果你觉得
但是如果一堆数量是奇数,这时候还剩一个,所以我们把数量是奇数的堆里面中间那个拿出来排序,然后两个人轮流选即可。
1147C : 妙啊,考虑如果有任何一堆空了但是游戏还没结束,那么接下来那个人大力取就可以赢。
如果有超过一半的
如果
考虑没有
所以归纳一下,我们得到,如果最小值超过一半,那么先手必败,否则先手必胜。
786A : 这个是移到
896B : 实在是太妙了,请自行看题解。
15C : 好像很妙?考虑Nim先手能赢当且仅当
实际上,你发现每个偶数和它下一个奇数的