时间安排
7:40~8:00
首先感觉T2挺好写的,转化为树上的问题就可以状压了,复杂度可能是
O
(
2
n
m
2
)
O(2^nm^2)
O(2nm2)
不过可以提前预处理做到
O
(
2
n
m
n
)
O(2^nmn)
O(2nmn),虽然感觉跑不过。
写了一半发现dp式子有问题,必须再记一维状态,那就又变成
O
(
2
n
m
2
)
O(2^nm^2)
O(2nm2)了,很难受,所以先放了放去看T1。
8:00~9:00
如果只有一个点,可以从底向上贪心的合并,但是题里有两个点。
突然想到,这两个点的连通块一定会在这两点间的路径上的某个位置交回,那么枚举分界点再分别跑贪心就可以
O
(
n
2
l
o
g
n
)
O(n^2logn)
O(n2logn)了,而且答案显然关于分界点单峰,不过有相等的函数值,所以不能三分,立马想到冰火战士的套路,用第一个减掉第二个二分求零点,复杂度
O
(
n
l
o
g
2
n
)
O(nlog^2n)
O(nlog2n),不知道能不能过,因为造不出树的形态不随机的数据,所以也没办法测试。
9:00~10:00
先写了T3的暴力,再写了一个平衡树又拿了20
10:00~11:00
突然意识到T2的dp的最后一维可以直接算出来,就可以做到 O ( 2 n m ) 了 O(2^nm)了 O(2nm)了,测本地数据发现开O2的话在1s左右跑完,感觉挺悬的,害怕被卡常