2022.4.1模拟赛总结

Posted Flame♡

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2022.4.1模拟赛总结相关的知识,希望对你有一定的参考价值。

呜呜…挂了一车分…

为什么T1要subtask!!!

时间安排

7.30-8.30

看题,先发现T1是个勾股定理可以暴力做部分分,T2状压,然后对着T3呆呆

8.30-9.30

呆呆了一会之后觉得8可以,于是又努力看T1,先感觉是不是决策单调性之类的,然后发现它的更新函数本质就是一堆二次函数取min,可以二分+单调栈做一下

然后就写了代码,对拍代码,测试数据

9.30-10.30

分析出T3的dp 三档部分分

10.30-11.00

T2状压+dfs暴力

11.00-12.00

写了一下T3的二叉树,但是发现不可避免的要有遍历子节点的问题,会假,然后就删了qwq

然后写了个数据测了一下,发现不会re,就很愉快的建文件夹了

题目分析

T1

勾股定理化简之后

其实就是一堆形如 ( p o s i − p o s j ) 2 4 ∗ r j \\frac(pos_i-pos_j)^24*r_j 4rj(posiposj)2 的东西取min

把这些二次函数画成图像,发现有用的一定是 p o s j pos_j posj 单增, r r r 单减的位置,然后可以考虑二分出什么时候对于 p o s j < p o s k pos_j<pos_k posj<posk , j j j 的函数值会小于 k k k

然后单调栈维护就好了!

错误的位置是,因为要判,如果A的函数值在 x x x 位置小于了B,要将B弹栈

然后数据 x x x 最大是1e9

我的二分右端点也是1e9,导致如果超过1e9只会判到1e9,对于x=1e9而言必定会被弹栈qwq

改成1e9+1就对了

T2

感觉是状压,估计是根据拓扑序考虑,再容斥掉相同的

T3

考虑dp,注意到一定至少向上返一条链,返回的链的数目不会超过两条

设计出dp状态 f [ i , 0 / 1 ] f[i,0/1] f[i,0/1] 表示在 i i i 号点向上返回了 2 / 1 2/1 2/1 条链时的最小花费

转移是
f [ x , 1 ] = m i n ( f [ x , 1 ] + f [ y , 2 ] + 2 , f [ x , 2 ] + f [ y , 1 ] + 1 ) f[x,1]=min(f[x,1]+f[y,2]+2,f[x,2]+f[y,1]+1) f[x,1]=min(f[x,1]+f[y,2]+2,f[x,2]+f[y,1]+1)
f [ x , 2 ] = m i n ( f [ x , 1 ] + f [ y , 1 ] + 1 , f [ x , 2 ] + f [ y , 2 ] + 2 ) f[x,2]=min(f[x,1]+f[y,1]+1,f[x,2]+f[y,2]+2) f[x,2]=min(f[x,1]+f[y,1]+1,f[x,2]+f[y,2]+2)

update

其实猜到是树剖了,唉

我和正解的距离就是大胆猜想结论,放弃dp,把贡献放到每条边上

顺便看了看LCT写法 大致懂了 不过就是又臭又长非常不想写

以上是关于2022.4.1模拟赛总结的主要内容,如果未能解决你的问题,请参考以下文章

7.15模拟赛总结

7.25模拟赛总结

7.25模拟赛总结

7.15模拟赛总结

7.17模拟赛总结

7.17模拟赛总结