时间安排
6
:
00
−
6
:
20
6:00-6:20
6:00−6:20 把四道题的题面全读了一遍,初步确定写题顺序为1,4,3,2。
6
:
20
−
6
:
40
6:20-6:40
6:20−6:40 我手画了几个菱形的例子,由于我画的菱形太小,导致我以为菱形就是一个正方形加上周围的四个中点,所以我的思路是先用
O
(
n
2
l
o
g
n
)
O(n^2\,log\,n)
O(n2logn) 求出
a
n
s
[
i
]
[
j
]
ans[i][j]
ans[i][j] 表示
(
i
,
j
)
(i,j)
(i,j) 所能拓展到的最大的长度,考虑对于两个菱形相交的情况,中间的“鞍部”一定比周围的要小,所以再用
O
(
n
2
)
O(n^2)
O(n2) 所有拓展的最中心的横纵坐标,存入vec,接着考虑对于所有的中心,其答案的时间必然是最小的长度(记为
L
0
L_0
L0 ),因为对于长度(记为
L
1
L_1
L1 )大于的最小值的情况,一定可以在初始的时候摆出
L
1
−
L
0
L_1-L_0
L1−L0 的菱形,这样所有的菱形就可以在相同的时间下完成图形。
6
:
40
−
7
:
20
6:40-7:20
6:40−7:20 写T1的代码,最难写的部分在于如何拓展,刚开始我用了一个二维前缀和,复杂度为
O
(
n
2
∗
玄
学
)
O(n^2*玄学)
O(n2∗玄学),后来又加了一个二分长度,复杂度
O
(
n
2
l
o
g
n
)
O(n^2\,log\,n)
O(n2logn),样例过了,就去看T4了。
7
:
20
−
7
:
30
7:20-7:30
7:20−7:30 把
m
=
0
m=0
m=0 的情况写了。
7
:
30
−
8
:
00
7:30-8:00
7:30−8:00 我以为题目的左上右上指的是左上右上一格,所以对于
m
=
1
m=1
m=1 的情况,我的想法是四周全放,对于中间的正方形隔一行放一行,特别的,若中间的正方形边长为奇数,那么最后一行也能放。对于
m
=
4
m=4
m=4 的情况就贪心地放,用
v
i
s
[
i
]
[
j
]
vis[i][j]
vis[i][j] 表示
(
i
,
j
)
(i,j)
(i,j) 能否放置。
8
:
00
−
8
:
20
8:00-8:20
8:00−8:20 我用6进制状态压缩写了20分。
8
:
20
−
9
:
00
8:20-9:00
8:20−9:00 一直在考虑其他的部分分,但是也什么思路。
9
:
00
−
9
:
30
9:00-9:30
9:00−9:30 又看了看T2,推了推性质,我以为是一个树形dp,但是不会合并子树信息。
9
:
30
−
9
:
45
9:30-9:45
9:30−9:45 推T3。