比赛页面

ABCD 都打的可以,然而 E 的 +10 直接葬送了大概率过的 F1 ……
先猜了个 的结论,但是没有写搜索查正确性(事实上确实不正确),于是两次罚时,第一次是交互格式错了。
然后又猜了个 的结论,过了几个小的搜索数据()的,大一点的没跑,于是又两次罚时。
五分钟后发现 7 3
都跑不过去,立刻全部删掉重新想。想出来的解法是对的,但依然吃了五发罚时。
猜 的时候写了个搜索做对拍,因为玩的小样例次数都 ,搜索设定了只会搜出来次数 的解,导致把 4 3
这种虽然两次不行,但是四次可以的情况判定为无解,再加上 5 2
这种确实是无解的,误以为 奇偶性不同就无解。
这个错误的判无解方式沿用到我的正确解法里面,吃了五发罚时才发现这个问题 ……
警示:猜结论最好能证明出来。猜结论至少跑个中等强度的数据。猜的结论测出错时,要立刻把所有基于这个结论的东西都视作未证明的东西,包括搜索。
下面记录一下 E 的正确解法。
题目转化为 个杯子,每次翻 个,要求全部翻面,最少几次。
考虑每个杯子被翻的次数 ,有:、,这是比较显然的。
因为每个杯子的地位是相同的,考虑构造一个 ,记 ,目标是让这个 满足上面两个条件的同时,让能达成 的操作次数最小。
对于一个序列 ,显然要至少 次操作才可行(因为不能一次操作重复翻杯子)。因为 是操作次数,所以必须有 才有可能可行。赛时直接数学直觉,猜这个也是充分条件过了。
如果这个结论成立,目标就是构造一个 满足:、、 这些条件,然后使 最小。
初始设定 ,因为必须是奇数,所以改变 只能 。因为要让最大值小于平均数,肯定是尽量平均的 ,如此循环直到 。
于是得到算法:令 ,每次令 ,然后 ( 则 ),直到 ,找到最优的 数组。判无解可以在这个过程中做:当 则无解。
然后是怎么通过 还原操作:每次取 最大的 个位置,然后全部 即可。
最后一个问题:为什么一个 数组在满足 、、 就能构造出合法序列?
按照 的大小归纳。
当 ,显然。
当 ,记 ,因为 ,所以 ;同时 。所以一定可以进行两次操作都包含 。于是 ,由归纳假设知可行。
官方题解:我们只关心当前奇数次的杯子个数,建立 ,第 个点表示当前有 个奇数,求 的最短路即可。
另外 F 是个没有技术含量的缩点。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!