时间安排
8
:
30
−
8
:
50
8:30-8:50
8:30−8:50 把四道题都看了一遍,T1感觉是kmp,T2没思路,T3看着像点分治,T4没思路。
8
:
50
−
9
:
40
8:50-9:40
8:50−9:40 对于T1,首先不难发现如果相对应的位置上的字符相等,那么一定要分成一组,然后考虑不相等,我最开始的想法是对于这一段做一个kmp然后这一段的程度就是
n
e
x
t
r
next_r
nextr,但是这样做时间复杂度太大,极限情况下是
O
(
n
2
)
O(n^2)
O(n2) 的,所以就在考虑优化,想了好久才发现自己进入了一个误区:一定是剩下的字符串的最长的前缀等于后缀。其实你只需要得到两段是否相等即可,所以就直接上字符串hash。
9
:
40
−
10
:
20
9:40-10:20
9:40−10:20 对于T2,首先我们可以把一个点所不能放的地方画出来,发现是一个立起来的正方形,然后这个点对答案的贡献就是不在这个区域的点的个数,然后就很自然的想到了二维数点,但是发现边不与坐标轴平行,然后就卡到这了。
10
:
20
−
11
:
00
10:20-11:00
10:20−11:00 对于T3,我的思路是点分治,考虑如果是二元组的情况该怎么求,显然对于每一次分治都有两种情况,两点都在同一子树内和两点不在同一子树内,然后就接着递归分治下去即可。接下来考虑三元组的情况,我的想法是在二元组统计的时候再统计一下距离,然后和即为答案,但是有这样一种情况:三个点分别在三个子树内,这种情况很难统计,然后就卡这了。
11
:
00
−
12
:
30
11:00-12:30
11:00−12:30 对于T4,我刚开始读错了题,以为是给的牌是ymh的牌,然后推了半天样例推不出来,后来才发现是xqa的牌,然后就在考虑拿
a
=
b
=
c
=
y
a=b=c=y
a=b=c=y 的部分分,想了半天把自己绕进去了,然后越想越不对,就放弃了。
12
:
30
−
12
:
50
12:30-12:50
12:30−12:50 又去看了看T2,最后才发现可以把所有点的横纵坐标旋转45度,这样就和坐标轴平行了,然后就是一个裸的二维数点,但是时间不够,没码完。
12
:
50
−
13
:
00
12:50-13:00
12:50−13:00 提交。