2023.6.19 NOI模拟赛总结
最抽象的一场
1.时间安排
7:10~8:40
T1:平面中有直径限制的最大点集,看上去是个NPC,看不出图的性质感觉不能用传统的图论来做,可能是个数论几何题?
T2:博弈背景的计数,除了正解的55分都很好写,直接状压DP+爆搜胜负状态,满档的值域到时没大多少,但是想不明白有什么用。
T3:类似构造的最优化问题,除了最后一个都是 \(c_i=1\) 感觉很奇怪,感觉 \(n,m\leq 300\) 可以网络流搞一搞。
推了推T1,记得以前在数竞看到一个结论是一个直径为1的点集一定可以被一个半径为 \(\frac{\sqrt 3}{3}\) 的圆覆盖,但是这东西是单射,没法从圆推到点集,就很寄。
然后试着往传统图论上转化,但是这东西显然不能传递闭包,没办法用嘉心糖那题的传递闭包求DAG最长反链。
想了很久都没有靠谱的做法,就先把T2的55分暴力写了,样例都很顺利的过了。
8:40~10:30
推T3的网络流,首先联想到的是nfls集训的一道网络流题,同样是区间加,但是这题是一个二选一模型,就很难办,魔改了很久都感觉很假。
然后想到了最长k可重线段集问题,但是同样卡在了二选一这个限制中,魔改了一下感觉很对,写了之后和大样例差了太多就不想继续研究了,打了个暴力跑路。
10:30~12:00
感觉T1如果数据不是那么强的话很大概率双射是成立的,就硬写计算几何(虽然只需要算点线关系),因为过程中无法避免 \(\sqrt 3\) 就直接写 long double 了。
具体的,枚举点集的直径,这个可以通过枚举所有的点对并钦定是点集的直径然后做扫描线(?)。
总之细节非常多,写完调了很久才过大样例,这时候已经11:40左右了,光速拼了个状压交了。
result:
T1:15 T2:55 T3:10
2.总结
T1:
果然OI题还是OI题,不要轻易往数竞题上转化。
仍然考虑传统的最大团解法,如果补图是二分图就可以轻松跑最大独立集,用总点数-最大匹配就能求答案,所以主要目标应该是想办法构造一个二分图。
考虑仍然用我上午那个逆天做法中的枚举点集的直径,发现到这两个点距离都小于等于直径的点可以划分为两个集合,如下图:

两个集合,这不就是二分图的左右部吗?
于是把问题转化为了有两个最大团,两个最大团之间有一些边,求两个最大团合并出的更大的最大团。
求个补图,补图的边是两个集合中点对距离大于直径的边,显然二分图,直接跑传统算法即可,复杂度 \(O(n^4\sqrt n)\),但是跑不满。
题外话:随机化可以拿80+,尊重随机化。
T2:
感觉值域200还是有一定启发性的,可以看做根号分治。
先从小规模问题入手。
如果集合是 \({1}\) 或 \({2}\),显然先手必败,接下来考虑 \({1,2}\),显然必胜,再考虑其他情况,如果所有数对2取模后的集合是 \({1}\),显然必胜。
现在情况来到了所有数都是2的倍数,显然这个时候是不能直接做的,因为有100种2的倍数,考虑对4取模,如果取模后的集合是 \({2}\),显然必胜。
现在所有数都是4的倍数,倍数数量规模仍然不能直接做,继续考虑对8取模,发现这时候集合是 \({4}\),不好讨论,进一步考虑对12取模,集合的可能性有 \({4}\)、\({8}\)、\({4,8}\),通过打表可以得到前两个必胜,后一个必败。
现在只需要考虑所有12的倍数,这个时候因为12已经接近根号级别,只有16个12的倍数,所以可以状压DP做,至于状态的合法性可以爆搜,通过打表只有2000多种状态,是可以接受的。
于是这道人类智慧题就做完了,复杂度 \(O(n+16\times 2^{16}+?)\)。
T3:
逆天结论题,参考了lpf的博客,感觉没有必要自己再搬运一遍了,里面的思考过程很有启发意义。
模拟退火可以拿45分,还是要尊重随机化算法。

浙公网安备 33010602011771号