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 4∗rj(posi−posj)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模拟赛总结的主要内容,如果未能解决你的问题,请参考以下文章