ARC148游记

ARC148游记

问:打 atcoder 的比赛有什么好处?

答:虽然不一定能上分,但是至少基本不会 unrated 。。。

CF 我最近打了三次,两次可以上大分的场次 unrated ,一次只能上一点分的没有 unrated ,我反正是无语了/kk

这场貌似是“模”场,场上只会前 ABCD ,赛后被舍友点醒会了 E 。

ABC 题解懒得写了, F 造计算机不会爬了。

D - mod M Game

场上猜结论猜出来的(不然就要下大分了呜呜呜),不过猜出来后也比较好证。

题意

场上 2N 个整数, Alice Bob 轮流取数, Alice 先手,如果最终 Alice 取出数的和在模 M 意义下和 Bob 取出来数的和相等,那么 Bob 获胜,否则 Alice 获胜。

1N2×105

题解

尽量写下思考过程。

考虑最后只剩两个数了,此时 Alice 先取,假设 Alice 之前取的数和为 x , Bob 为 y ,剩下两个数 a,b ,那么 Bob 要赢当且仅当 x+ay+b(modM) 并且 x+by+a(modM) ,即 2a2b ,于是我们得出最后剩下两个数 a,b Bob 获胜的必要条件是 2a2b(modM) ,不妨我们认为这样的 a,b 是“配对的”。

自然想到配对的数会成对拿走。 a,b 配对要么 abba0(modM) ,要么 abbaM2(modM) ,先把第一种情况的全部两两配对拿走,对于第二种情况,我们知道这样的对数每加一,那么 Alice Bob 间的差距就会增加 M2 ,所以这样的对数必须是偶数对。

于是我们大胆猜测: Bob 获胜当且仅当在删除两两相同数后剩下的数的个数是 4 的倍数且可以通过以上配对规则两两配对。

证明就很简单了,只需要构造必胜方案,如果 Bob 必胜,按照配对思想先配好对, Alice 拿哪个 Bob 就拿它的配对数,这样 Bob 可以保证每组配对数两人都拿到恰好其中一个,它们的和必然相等。

如果 Alice 必胜,还是先把相同的数两两配对,剩下的数按规则配对:如果全部配对成功那么 Alice 类似上述 Bob 的策略可以每组配对数两人都拿到恰好其中一个,它们的和必然差 M2 ;如果仅部分配对成功,那么 Alice 只需要关注配对不成功的数,利用自己的先手优势可以控制配对不成功的数中 Alice 拿到的数与 Bob 拿到的数之差必然不能补齐哪些配对成功的数造成的两人之差(这个差值可能是 0 或者 M2 ),具体策略是如果配对不成功的数的数量不止两个, Alice 就从里面任意拿,之后 Alice 的行动根据 Bob ,如果 Bob 拿可配对的数,那么 Alice 就拿它的配对数,如果 Bob 拿不可配对的数,那么 Alice 也拿不可配对的数,直到不可配对的数中仅剩两个 a,b , Alice 显然可以预测到配对数全拿完后两人数的差,如果 Alice 选 a 会导致失败,那么 Alice 拿 b 就可以了,因为拿 a 和拿 b 会导致最后两人数的差不相同。

E - ≥ K

题意

给定 N 个数的序列 A1,,AN 和一个整数 K ,问有多少个 A 的排列满足任意相邻数之和大于等于 K 。答案对 998244353 取模。

2N2×105

题解

好妙的题,可惜太菜场上不会。。。

首先序列就十分不优美,与开头数和末尾数相邻的数都只有一个,于是我们增加一个 + 放在头尾之间形成环,于是所有数相邻的数都有两个而且不会算重。

将所有数分成两类,一类小于 K/2 ,一类大于等于 K/2 ,小于 K/2 的数相邻两个数必然大于 K/2 ,我们考虑这里面的最小值,选择两个数放在它的前面和后面使得这两处相邻合法,然后就可以将这三个数视为一体,容易发现这三个数组成的整体放在任意位置都行,因为没有比最小的数还小的数了,于是我们删除这三个数加入一个新数 + ,然后继续考虑最小值即可,容易发现这种考虑顺序计算方案直接乘法原理即可。

当最小值大于等于 K/2 时,此时场上剩下的所有数都可以任意排了,于是就是个圆排列了。

posted @   xiaolilsq  阅读(560)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示