2021 年广东省重点中学信息学冬令营普及组DAY1 (GDKOI 2021) Summary
虽然不是正式考生,但是被正式考生暴虐,到时参加提高组可就没了。
今天打的非常不好,状态不佳。
第一题
考虑分类讨论,看错误在哪里,多种情况。然后用心调一下即可,毕竟我调了1h。
以后这类型的题目要看清数据范围,用合适的算法进行模拟,一定要考虑好,把每个情况考虑清楚。
第二题
考虑一下暴力,设
s
s
s表示前缀和,
l
,
r
l,r
l,r分别为水最多可到的地方,然后答案就为
y
(
r
−
l
+
1
)
−
(
s
r
−
s
l
−
1
)
y(r-l+1)-(s_r-s_{l-1})
y(r−l+1)−(sr−sl−1),直接拆开公式即可。然后算法瓶颈就在求
l
,
r
l,r
l,r,维护一下区间最大值,然后二分一下,由于最大值有单调性,所以满足二分。这样做时间复杂度在
O
(
n
(
log
2
n
)
2
)
O(n(\log_2^n)^2)
O(n(log2n)2),用
S
T
ST
ST表优化到
O
(
n
log
2
n
)
O(n\log_2^n)
O(nlog2n)。
这类型的题目首先想一下暴力,看一下暴力如何优化,有多种算法,比如说:离散化、二分、单调队列等等。
把这道题稍微加强,我们想到了另外的题目。如下:
- 每次要修改一个位置的砖块高度,然后其它与原题不变。这个题目可以用线段树维护最大值,时间复杂度 O ( n ( log 2 n ) 2 ) O(n(\log_2^n)^2) O(n(log2n)2)。
- 每次要将一个区间做取 m i n min min操作,即将这段区间所有大于某个数的数赋为那个数。吉老师线段树??暴力修改,势能分析可得单次修改 O ( log 2 n ) O(\log_2^n) O(log2n),所以总时间复杂度 O ( n ( log 2 n ) 2 ) O(n(\log_2^n)^2) O(n(log2n)2)?
第三题
考虑贪心,排序一下,用双指针扫描,发现答案就为不匹配数。
比赛时没有想到这种方法,导致没有得到很高分,其实这种题目看数据范围就是贪心,至于怎么贪心,可以学习今天讲题的方法:用两个下标举个例子。这样可以推出贪心式子。
当然有很多玄学做法:比如网络流70,也就是建一个二分图,做匹配。
第四题
可以发现题目其实就是求从
x
x
x出发,每次只能经过边权小于等于
w
w
w的边,问经过多少个点,证明显然。然后就可以想到最小生成树,建出一棵树,就能拿到50分。正解离线做,把询问排序,然后边搞边合并,就行了。
比赛时打了50分方法,因为时间问题没有继续想,其实还有很多时间,以后要把握住,看问题是否有突破性。