时间安排
8
:
30
−
8
:
50
8:30-8:50
8:30−8:50 先把四道题都看了一遍,T1应该是个结论题,T2没思路,T3和环有关,T4应该和最小生成树有关。
8
:
50
−
9
:
40
8:50-9:40
8:50−9:40 对于T1,我先码了一个
n
3
n^3
n3 的暴力,然后考虑每个点对答案的贡献,显然只和当前这一行和当前这一列的点有关,假设当前点为
(
x
,
y
)
(x,y)
(x,y),然后其他点为
(
x
,
y
1
)
,
(
x
,
y
2
)
,
(
x
1
,
y
)
,
(
x
2
,
y
)
(x,y_1),(x,y_2),(x_1,y),(x_2,y)
(x,y1),(x,y2),(x1,y),(x2,y),那么对答案的贡献为
∣
x
−
x
1
∣
∗
∣
y
−
y
1
∣
+
∣
x
−
x
1
∣
∗
∣
y
−
y
2
∣
+
∣
x
−
x
2
∣
∗
∣
y
−
y
1
∣
+
∣
x
−
x
2
∣
∗
∣
y
−
y
2
∣
|x-x_1|*|y-y_1|+|x-x_1|*|y-y_2|+|x-x_2|*|y-y_1|+|x-x_2|*|y-y_2|
∣x−x1∣∗∣y−y1∣+∣x−x1∣∗∣y−y2∣+∣x−x2∣∗∣y−y1∣+∣x−x2∣∗∣y−y2∣,可化简为
(
∣
x
−
x
1
∣
+
∣
x
−
x
2
∣
)
∗
(
∣
y
−
y
1
∣
+
∣
y
−
y
2
∣
)
(|x-x_1|+|x-x_2|)*(|y-y_1|+|y-y_2|)
(∣x−x1∣+∣x−x2∣)∗(∣y−y1∣+∣y−y2∣),即当前这一列的距离之和乘上当前这一列的距离之和,然后我的想法是先把这个答案记录到最小的
x
x
x 和
y
y
y 上,然后每次移动的时候动态维护差值。
9
:
40
−
10
:
30
9:40-10:30
9:40−10:30 太自闭了,我码完T1后写了个对拍,然后怎么拍都是错的,大数据手推不了,小数据又能过,所以就一直在盯代码,改来改去就是过不去,改了半天改自闭了,才想起来看了看暴力,发现是我暴力打错了:暴力代码我考虑了顺序,所以最后要将答案除2,然后我就顺手写了个
a
n
s
/
2
ans/2
ans/2,完全忘了这是个取模后的答案,要乘
2
2
2 在
P
P
P 的意义下的逆元,然后才对拍过,T1直接花了将近两个小时。早知道不对拍了。
10
:
30
−
11
:
10
10:30-11:10
10:30−11:10 对于T2其实我没有太好的思路,但是肯定要将大的数放在前面,然后因为dfs序在子树内是连续的,所以能想到子树内分治,但是没想到dp,就直接码了个暴力。
11
:
10
−
12
:
00
11:10-12:00
11:10−12:00 对于T3,考虑分情况:当
k
=
0
k=0
k=0 时显然答案就是图内连通块的个数;当图是森林时显然每割一条边都能增加一个连通块,所以就记录一下每个树的大小即可;当图是基环树森林时显然要先将除环之外的点都变成单独的连通块,然后再考虑割环上的点一定是最优的,所以我就统计每个树上的不在环上的点的个数和环的大小,然后再将环按大小从大到小排序,贪心地割边即可。
12
:
00
−
12
:
40
12:00-12:40
12:00−12:40 对于T4,首先答案为
1
e
9
1e9
1e9 的情况显然是割边,然后对于样例我推的是环上的两条路径取最大值作为答案但是我不会求树边的答案。
12
:
40
−
13
:
00
12:40-13:00
12:40−13:00 又去试了试T1的极限数据然后就去提交了。