Day1
T1是一个
x
×
y
x\times y
x×y的坐标区域,要求从
(
0
,
0
)
(0,0)
(0,0)走到
(
x
,
y
)
(x,y)
(x,y)离特殊点最近的距离最大。
大概就是一个左上联通右下的问题,一开始想二分,时限太卡可能过不去,于是就想最小生成树,以特殊点之间的距离/2为边权,左上联通右下时就是答案。
T2是找环套树两点最小距离最大,找出环后再环上随便处理一下,用单调队列或数据结构可以维护。
T3树dp+一些结论,比赛时没想出来。
注意到每条边最多贡献两次,转移时就以这个为考虑根据。设
F
x
F_x
Fx表示从
x
x
x点走完子树走回
x
x
x点的最小权值。考虑一个儿子
y
y
y,设
v
v
v为
x
−
>
y
x->y
x−>y的权值,当
v
v
v贡献两次时,
F
y
F_y
Fy可以直接转移。当
v
v
v只贡献一次时,则说明要在
x
x
x点设传送门,往下走到
y
y
y点,然后走到底再走回
y
y
y,如此往复,最后在一个叶子处传送回
x
x
x。考虑
y
y
y子树内哪些边是不用走两次的,即从
y
y
y开始往下的最长链,直接转移即可。
总结
T3没分比较吃亏,T2也少考虑一种情况少了5分,总体来说一般。
Day2
T1裸的dp,开始看错题,最后没判-1,还因为读入格式在老爷机上爆0了。
T2树上求k个点组成连通块权值和,可以建虚树但没打,用类似的思想打了链剖,最后跑得贼快。
T3想错题,缩了边双联通分量,导致只有树的40分。
总结
OJ上两天总分400多,不是很高,然而机子上少了许多分,是平常编译警告没开够的原因,以后要特别注意。