前言
分数感人……
两个小时T1,然后发现我的
O
(
N
M
)
O(NM)
O(NM)跑不过O(N2)……
T3挺多人A掉了,说是数据太水。
然后看了看题解,老曾二分+60%的方法+双指针就AC了……(大雾)
还有五花八门的切法,然后我却连二分和DP都没想到。
题目
T1
正解:
在线方法(离线的还不怎么会)
一个性质,如果加上的两个点是直径上一点的话,那么另一个就是原来直径的另外一点。
所以考虑每次求出当前的直径的两个点和加入的两个点的距离(LCA解决)
所以整体时间复杂度就是
O
(
n
l
o
g
(
n
)
)
O(nlog(n))
O(nlog(n))
T2
正解:n2的DP水过去了n<=40000。
或者是数学的方法(正在摸索)
考虑每一段的**-1的方案数,然后全部乘起来即可。
但是有它不能小于0这个限制,所以放到二维的图中我们就要多考虑一下。由终点B与-1**这条线对称的点,然后用总方案数减去这个不合法的方案数。
T3
二分+DP
二分答案,其实时间这个东西本来就是有序的。所以考虑二分一个答案。
DP,在check里面判断是否成立。
设
F
k
,
i
,
j
F_{k,i,j}
Fk,i,j为1—k做了第一种i个第二种j个的可行性。显然这样设三维表示可不可行在时间上很浪费。
所以减掉最后一维
F
k
,
i
F_{k,i}
Fk,i为1—k做了第一种i个时能做第二种的最多个。
贪心转移即可。
T4
听老师讲了一大堆……
二分图最大独立集,数量最多有几个会求了。
但是方案数还是不会……
最小割的出现就是雪上加霜好吧。