Atcoder Beginner Contest 277(A~Ex)
又是只过了五道半题的一天.jpg
手速场无疑。
赛时
A 找数组中一个数的下标;B 简单字符串判断;C map+搜就行了。
D 考虑先离散化,然后暴力找权值最大的连通块即可。
E 考虑到每按一次按钮全图的边就会改变,且只有两种不同形式的图。所以可以拆点,将图分层,对于可以按按钮的点就将拆成的两个点连起来即可。不过注意到按按钮不耗费操作,所以按钮边权为 ,正常边权为 ,开个双端队列跑 0-1 bfs 就行。
到这里一共打了 35 min,然后开始罚坐。不过值得欣慰的一点是没有耗费额外的罚时。
看了 10 min F,想到了无论怎么变换,每一行的元素依然在同一行,每一列的元素也依然在同一列。又去看了 10min G,感觉是个 nb 的期望 dp,也不太会。
于是又回去看 F,又想到了可以对于行和列分别判断约束,对于行的约束其实就是,将每一行的最小值最大值看成一个区间后,要求区间不能相交,写了之后发现还是不会约束列.jpg,但实际简单的很(赛时脑抽系列
赛后
F - Sorting a Matrix
F 好难调啊……
对于行的约束除了上面说的之外,可能需要特判 的情况,不然或许会对线段重合的判断造成影响,这点调了俩小时;以及也特判一行全 的情况。
那对于列的约束怎么处理呢?我们发现对于每一列实际上是给了我们若干形如【第 列小于第 列】的约束关系,那么我们不妨将行内元素排序,在忽视 的情况下,从较小权值的列向较大权值的列连边,最后看图中有没有环即可判断约束是否矛盾。
不过注意还存在一车元素相等,另一车相邻的元素也相等的情况,此时如果直接由左侧元素向右侧元素两两连边复杂度显然不对,于是我们可以采用经典的优化建图 trick,将相等的元素统一连到一个新建的虚点上,再从这个虚点向后一个元素连边即可。
时间复杂度 .
G - Random Walk to Millionaire
破防了破防了,彻底破防了,被自己弱智错误的多样性整的破大防。
周日 star 模拟赛打过相似思路的题目。考虑倒序 dp,设 为进行了第 到第 次行动,且当前在节点 时的答案期望。思考两种操作分别对于当前答案的贡献。
对于操作 ,我们会让之前的若干个 变成 ,直接转移期望不好转移,由于 ,于是考虑维护 表示当前一次项的期望, 表示当前零次项的期望,依次转移,有转移方程:
对于操作 ,我们相当于增加了一下 次项,所以将 次项加 之后算期望即可。
初始对于每个节点 将 ,时间复杂度 。感觉类似这种【带有一个影响后续贡献计算的属性】的 dp 大多都可以倒序做,会简单许多。
赛后脑残用前缀积预处理优化求 inv 的过程,忘记将前缀积差分了,并且一点异常都没有发现,于是调了四五个小时+重构代码一次,彻底破防orz
Ex - Constrained Sums
第一想法是差分约束,但是并不好做,因为约束的是加和形式而非差的形式。
于是考虑 2-SAT 的变式 K-SAT。
考虑将每一个变量都拆成 个点,分别表示 ,并建立他们的否命题节点 。然后对于每个条件考虑如何连边进行约束。(注意下面每一个约束的逆否命题同样也需要连边)
-
-
,,。
-
,,。
-
, 。
-
, 。
差不多就这些约束条件,依次连边即可。至于原因,看了连边方式之后应该也很容易想到。
除此之外由于值不可能大于 ,所以还需要对于每一个 处理边界:
跑 tarjan 缩点即可,若一对约束条件在同一强连通分量中则无解,时间复杂度 .
双倍经验 Too Many Constraints.
启发
破防了没有心情再写什么启发了……真的是感受到了自己脑残错误的多样性。
只能说代码尽量想清楚一次写对吧,以及调试时多留意不引人注意的部分。
赛时的话还是要多转化模型做题。
FGH 题均调试 4h,还都是半会的题目,累了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!