2022.08.15 NOI模拟赛总结
1.时间安排
8:30~9:00
T1:给出01串,可以花费1取反一位或前缀m的倍数位,最小化代价使得前n-m和后n-m位相同,看不出来是啥,但n只有300感觉是网络流。
T2:给出二叉树,对每个节点求所有节点splay后这个点的深度之和,只会\(n^2\)暴力,也许打表能找到特殊性质的规律。
T3:给出树和若干路径,路径正向反向独立,给每条路径定向最大化路径并,并构造方案,树剖可以做m=15的 \(m2^mlog^2n\),也许能上lct过m=20,链和菊花可能有特殊构造方法,而且每个点最大值对能得25%分数(1分),感觉很可做。
9:00~12:00
直接干T3。
先把暴力树剖打了,随了组极限数据跑了5s……卡了卡常才卡到1.5s左右,但题目实现是1s。
本来想打lct,但是想不到路径覆盖怎么维护。
(但是最后还是过了)
因为细节很多,写到这里大概是10:30。
然后思考链的分数,发现最大值很好求,路径+1,每条边覆盖次数与2取min,全局求个和。
想怎么构造方案,一开始想从左到右贪心,选了一个路径后其他与他有交集的路径与他反向,但是写spj检验wa了。
思考了很久怎么搞,一直到11:30左右,还是想不出来。
试着想求最大值是不是都能用链的方法搞,随了一些数据发现都是这样,感性理解感觉很对,直接吉老师线段树。
12:00~12:40
写T2的暴力splay,发现有点卡常加了一些优化。
12:40~13:20
先打了T1的爆搜,时间不多也没手构数据验证。
然后发现前n-m和后n-m相同实际上是这个串的循环节是m。
m比较小的时候直接dp,转移的话枚举值这个段取反还是这个段不需要取反的位置取反带上前面的执行第二种操作。
极限在结束前调完,复杂度 O(\frac{n}{m}*2^m)可以过m<=18的70分。
之后想了想似乎直接根分就能过,但是没时间写了。
result:
T1:70 T2:32 T3:52
2.总结
T1:
要不是时间不够肯定能打出来正解/ll
当m>18的时候一共可以前缀取反的位置只有最多300/18个,状压那些位置前缀取反,然后按对m取模的剩余系对m位独立讨论全变0还是1即可。
策略的大失误,应该1h左右就能切T1,反而搞T3搞了太久。
T2:
究极离谱分讨题。
有外省大佬打了哥52分的满二叉树,听懂了,但感觉不是很好写,写了补上。
(待upd)
T3:
最大值的结论是对的,而且树上差分就可以做,不需要树剖+吉老师线段树的垃圾\(log^2\)。
构造的话看lg题解吧,不口胡了。
上次写欧拉回路还是学术社区,图论提高组的东西都忘了差不多了,比如差分约束这类的,要复习复习。

浙公网安备 33010602011771号