3/3考试总结
时间安排#
7:30–7:50 看题,怎么感觉三道构造,T3 貌似有网络流背景。
7:50–8:30 T1,有一些简单的性质,缩减两端点后枚举一下翻转的区间就可以了。然后花了一点时间写 spj 调试。
8:30–10:20 T2,比较纯粹的构造题。有网络流做法,但是复杂度过于紧,空间也卡的很死,估摸着也就比手玩多个 5 到10 分左右。考虑构造,手玩一下没找到什么规律。琢磨样例发现有几个比较固定的方案,于是把这些方案拼起来。细节一大堆写写写写到 10:20 。直接去看 T3 了。
10:20–11:30 T3,状压是好求的。考虑更高的部分分,显然可以用网络流求个最大独立集什么的,然后 dfs 一下发现不是二分图,于是就不会了。想了想不可能裸上网络流,应该是有性质什么的,瞪了一会没瞪出来。
11:30–11:50 回头看了一眼 T2 ,随便玩了几个小样例发现好像有反例,但是没什么规律性,好像也没法变成系统的构造方案。
回顾反思#
T2:
赛时一直在找规律的构造。
然而事实上赛后参考了一下同学的做法,发现就没啥规律,对小数据硬打表然后把小规模的方案拼起来。
还是要勤于动手去搜。
一个人类智慧的点是,用单位长度为 4 的规模取拼的时候可能会遗留一些不够 4 的很小的空隙,小的空隙不好归纳,可以考虑牺牲一些已经拼好的位置将其规模扩大 4 然后做。
T3:
没有发现边的传递性。
发现边是传递闭包后,可以钦定一个边的方向,于是由无向图变为dag,变成了求最小链覆盖问题。
于是就可以建出拆点二分图的模型了。
最小链覆盖的模型不太熟悉。这种性质的敏感度要加强一下。
这个可以网络流解决。不过需要优化。
一个神奇点是,尽可能贪心的匹配后,剩下的未匹配的点数量是
n
\sqrt n
n 级别的。这个题解里没有给出证明,我也不太会证。
以匈牙利算法为例,增广的过程中,一个优化是,对于一个点 x ,有若干出边 y ,那么之后递归到点 z 时的增广无需再考虑出边 y 。因为传递闭包,z 考虑出边 y ,不如 x 考虑出边 y 。于是一次増广中每个点的出边只被考虑一次。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】