时间安排
8:30–8:50 简单看一下题目,T1 送分,T2 可能是个DP,T3 是个原题,T4 交互。
8:50–9:00 T1,维护一下第一次传输和最后一次传输就可以了。
9:00–9:30 T3,是以前做过的题,对期望DP,注意下特殊情况就可以了。
9:30–10:00 T2,暂时没什么想法,先打暴力。思考怎么转化区间max,想到以前做过的笛卡尔树什么的,不过不能套用在这里。
10:00–12:00 T4,对于链,可以维护端点找到链的两端,进而可以 n^2 得到形态。显然可以归并排序做到 nlog ,对于随机档没什么想法,将链的做法改了一下,卡了卡复杂度,但不是很理想。
12:00–13:00 思考T2.
回顾反思
T1: 是一道送分题。这种题目一般考的都是一些简单性质,不能失分。
T2: 很可惜,只拿到了最低档的暴力分。对于48分的区间DP做法还是很显然的,但是没有想到。对于式子里带有区间max题目,可以将元素排序从小到大加入数组,这样每次考虑的值必然是最大值,对一个位置考虑贡献就可以了。进一步分析发现即使将非最大值带入计算,由于一定不优,所以不影响答案,于是就可以无视掉区间max的性质,方便计算。式子可以化为
a
∗
x
−
b
a*x-b
a∗x−b 的形式,这里x为变量且有单调性,那么就可以以 (a,b) 作为点, x 为斜率去切,维护凸壳就可以了。
T3: 原题。讲题人的做法还是很妙的,直接对式子暴算化简,这种推式子的方法不是很熟悉,可以学一学。
T4: 交互题。发现很多这种交互题都用到了二分。对于这道题,要找树的形态,那么对于一个点x,可以先暴力二分找到其子树内的点,递归完子树内点的子问题后,在这些点中暴力二分找到与自己直接相连的儿子,就可以了。
1.对于式子中设计区间max的,比如
∑
l
∑
r
Q
l
,
r
max
{
A
l
,
A
l
+
1
,
.
.
.
A
r
}
\sum\limits_l\sum\limits_r Q_{l,r}\max\{A_l,A_{l+1},...A_r\}
l∑r∑Ql,rmax{Al,Al+1,...Ar},直接做不好做,可以考虑对
A
i
A_i
Ai 排序,从小到大加入数组分别考虑贡献,这样每一个新加入的值都是最大值,就可以直接计算贡献了。
2.对于式子中设计区间max的,比如
∑
l
∑
r
Q
l
,
r
max
{
A
l
,
A
l
+
1
,
.
.
.
A
r
}
\sum\limits_l\sum\limits_r Q_{l,r}\max\{A_l,A_{l+1},...A_r\}
l∑r∑Ql,rmax{Al,Al+1,...Ar}。有时通过分析题目性质,发现将非最大值代入式子不优,不影响最终答案的得到,那么就可以忽略max的限制,直接对每个元素的贡献取最优。
3.对于可以化成类似
a
∗
x
−
b
a*x-b
a∗x−b 的式子(x为变量),可以将每个元素看做点
(
a
,
b
)
(a,b)
(a,b),
x
x
x 看做切的斜率,那么就可以维护凸包做了。
4.T4:发现很多这种交互题都用到了二分。对于这道题,要找树的形态,那么对于一个点x,可以先暴力二分找到其子树内的点,递归完子树内点的子问题后,在这些点中暴力二分找到与自己直接相连的儿子,就可以了。