W
e
l
c
o
m
e
: )

CSP-S 2024 游记

Day 0

回顾了一下各类字符串算法,切了几道 ACAM 的题。(果然没考)

然后就摆了。

Day 1

上午狠狠的摆。

下午去考场。

考试过程中被小孩哥干扰,左边砸鼠标,右边砸键盘。

有点缺德。

T1

签。

\(cnt_i\) 为战力为 \(i\) 的怪兽的个数,答案即为 \(\max(cnt_i)\)

T2

转换成每个车能被下标为 \([l, r]\) 的摄像头看到。

最小点覆盖即可。

T3

\(dp_{i,j,k}\) 为枚举到第 \(i\) 位,上一位蓝为第 \(j\) 位,上一位红为第 \(k\) 位。

显然有 \(i=j\)\(i=k\)

所以我们简化为 \(dp_{i,0/1,j}\),表示为枚举到第 \(i\) 位,第 \(i\) 位取红/蓝,上一位蓝/红为第 \(j\) 位。

于是有:

\[\begin{aligned} dp_{i,0,j}&=dp_{i-1,0,j}+[a_i=a_{i-1}]\times a_i\\ dp_{i,0,i-1}&=\max^{i-2}_{j=0}(dp_{i,0,i-1},dp_{i-1,1,j}+[a_i=a_j]\times a_i)\\ \end{aligned} \]

发现 \(0/1\) 互不影响。

于是又有:

\[\begin{aligned} dp_{i,j}&=dp_{i-1,j}+[a_i=a_{i-1}]\times a_i\\ dp_{i,i-1}&=\max^{i-2}_{j=0}(dp_{i,i-1},dp_{i-1,j}+[a_i=a_j]\times a_i)\\ \end{aligned} \]

鉴于 \([a_i=a_{i-1}]\times a_i\) 为定值,上排的式子可以转化成全局加。

考虑优化下排的式子。

\[\begin{aligned} dp_{i,i-1}&=\max^{i-2}_{j=0}(dp_{i,i-1},dp_{i-1,j}+[a_i=a_j]\times a_i)\\ \end{aligned} \]

将其拆成三个式子的 \(\max\)

  • \(dp_{i,i-1}\)
  • \(\max^{i-2}_{j=0} dp_{i-1,j}\)
  • \(\max_{j<i-1,a_i=a_j} (dp_{i-1,j}+a_i)\)

观察到第二个式子和第三个式子都包含区间最大值,考虑使用线段树优化 dp。

具体来说,对满足 \(a_i=k\) 的项单独开线段树,并对全局单独开一棵。

那么二操作就是全局树的区间 \(\max\),三操作就是第 \(a_i\) 棵树的区间 \(\max\)

做完了。

T4

没来得及写,T3 debug 时间太长了。

模拟应该能拿 30 pts。

感受

  1. fsanitize 开了之后耗时几乎 \(\times 2\),T2 在打开时极限数据下耗时为 1300 ms,关闭后即降低至 600 ms。

  2. T3 式子转线段树的时候弄错了,浪费的时间有点长。

posted @ 2024-10-29 18:59  Jimmy-LEEE  阅读(43)  评论(0)    收藏  举报