外观
CSP-S-2024.md---
title: CSP-S 2024 日记
createTime: 2024/10/26
categories:
- IT
tags:
- OI
- OI-travel-notes
---
## Day -∞
作为一个半路出家,$\text{whk} \gg \text{OI}$ 的人,停课是不可能停课的,这辈子都不可能停课的。只能在作业比较少的时候翘掉晚自习这样子。
Day -7 模拟 240.
## 前
监考老师不让带可乐。
考场有没开空调。
热死了。
后来监考老师给我拿了水。不过这是后话。
## T1
一眼排序,贪心易证,解法显然。
但是也花了十几分钟,别问,问就是之前忘了处理相等的情况。
## T2
第一眼看到第二问,这不是著名 NP-Hard 问题集合覆盖吗?
于是去看 T3 了。
后来猛地一看样例解释,哦,区间覆盖啊,那没事了。
于是兴冲冲地想解法了。
### ver.1 (错解)
受到样例解释的感染,超速临界点为 $p=d_i + {V^2-v_i^2 \over 2a_i}$,手工向上下舍入。
接下来分类讨论:
:::tip 注:
- 后文所有区间均指该区间与 $\mathbb{Z}$ 的交集
- $\mathrm{LB}(x)$ = `lower_bound(p+1, p+m+1, x) - p`
代表满足 $p_i\ge x$ 的最小的 $i$;
区间化地,代表 $p_i\in[x,+\infty)$ 的左边界。
- $\mathrm{UB}(x)$ = `upper_bound(p+1, p+m+1, x) - p`
代表满足 $p_i\gt x$ 的最小的 $i$;
区间化地,代表 $p_i\in(x, +\infty)$ 的左边界。
- 之后会用到,$\mathrm{LB}(x)-1$ 代表 $p_i\in(-\infty, x)$ 的右边界。
:::
- $a_i=0$
- $v_i\le V$,无事发生
- $v_i\gt V$,超速区间 $[d_i, +\infty)$,
对应到摄像头上,即为 $\mathrm{LB}(d_i)$ ~ $m$
$(LB(d_i)\ne m+1)$
- $a_i>0$
- 超速区间 $(p,+\infty) = (\lfloor p\rfloor, +\infty)$
对应到摄像头上,即为 $\mathrm{LB}(\lfloor p\rfloor)$ ~ $m$
$(LB(p)\ne m+1)$
!!然而这是错的!!!
- $a_i<0$
最复杂的一集。
- $v_i\le V$,无事发生
- $v_i>V$,超速区间 $[d_i, p)=[d_i, \lceil p\rceil)$
对应到摄像头上,即为 $\mathrm{LB}(d_i)$ ~ $\mathrm{LB}(\lceil p\rceil)-1$
$(\mathrm{LB}(d_i)\le\mathrm{LB}(p)-1)$
第二问是一个贪心的模板。每个区间按右端点升序排序之后,对于每一个区间,如果当前没有摄像头开着,就把它右端点的摄像头开了。
虽然第二问基于第一问,但是我都是第一问起火,第二问稳过。
### 改 I
1, 2 样例都对了,一看 3,丸辣!顿时心灰意冷。
“然而我已经不是去年的我了!”
我从头分析一遍,原来是 $a_i>0$ 时的 `upper_bound` 写成 `lower_bound` 了。
改了,然而还是错。
一试,结果 C++ 的整除居然是向 0 舍入。好吧,改了,但是仍然错。
我慌了,试着过滤掉范围不合法的。结果更错了。
### 改 II
一看第 3 个样例,发现 $a_i$ 咋都是 0 呢?再一看,#4 $a_i>0$,#5 $a_i<0$. 好吧。
于是 #3 盯着 $a_i=0$ 改了。具体的忘了。
然后再分析,发现 $a_i>0$ 的时候,应该为 $[d_i, +\infty)\cap(p,+\infty)$,然而这个并集不好做。于是加了 $v_i>V$ 的特判代替。
改完居然稀里糊涂地 A 了所有大样例。
代码果然是玄学。
## T3
### 以1为单位转移
写了个 $\mathrm{O}(n^3)$ 的暴力 dp 拿部分分。
$f(i, r, b)$ 表示第 $i$ 个字,上一个红,蓝色分别是 $r, b$.
本来想用 map 防止爆空间并且减少无用计算的,但是忘了 map 咋写了。
最后只能把 maxn 改小了。痛失更多部分分。
### 以段为单位转移
马后炮想出来的,可惜 T2 调了太久。
## T4
太长没看。
## 后
对了大样例。实在没有时间和精力打拍子了。
最后 30 分钟,我一边憋着尿一边求神拜佛。
提前 2 分钟收卷,出考场发现我的可乐居然被人喝了。
## 分
$100+100+35+0=235$