CSP2022游记(VP)

· · 个人记录

这是VP游记。但是NOIP游记还会沿着这个往下写。

今年不会再出毛病了。

你去年也是这么想的。

J的初赛出了。

感觉不算太难。

J组阅读理解大赛石锤了。

第二题是个平衡树?反正和自己没关系。

其实并不是,似乎暴力就够了。

下午TG大危。

问题不大。

这次比去年真的简单了不少。

有一周时间去恶补文化课了。

今晚打了ABC,傻逼行为如下。

  1. D题把 at most 翻译为最大值而非最多。
  2. 使用 rs 作为线段树中的关键字会导致编译器报错。
  3. 我不知道上一条规则,所以我把define int long long换成了define ll long long
  4. 编译器不报错了,但是我还是没有习惯define ll long long
  5. 我设定如果a_i等于0则将其设置成正无穷。
  6. 正无穷是10^{16}
  7. 在记录a_i时我用了一个叫cur的中间变量,类型是int

想在这配一张反法西斯英雄的照片。

这位反法西斯英雄在1945年4月30日亲手枪毙了希特勒。

我是孙吧老哥。

今晚打了ABC,傻逼行为如下。

  1. C题没有删除删掉两个序列后的数的存在而导致WA
  2. F题只考虑了对角线上权值为p的点是否存在,因为前两个样例中这种情况都是唯一的,只有在01矩阵中才能体现。

数组开小挂分40

记得无论怎样一定要在交题之前看数据范围。

不是看数据在哪个段就够了。

场切 *2600 但不会树形DP祭。

调出了洛谷模拟赛的线段树板子,获得了1=的好成绩。

总算有了个结果。

挂分 160,好似。

平如明镜的水面,蓝如宝石的天穹。

既然已经没剩下什么了,那就从零开始吧。

开赛。

稀落的阳光照入窗台,云层像列车一样往固定的方向飘去。

总览题目。

第一题初看没思路。开第二题。

一开始想的还是把 C 矩阵给构造出来。

然后对于每一行维护最小值,去看每一行“最合适的”值乘他的值究竟哪个最合适。

恍然大悟,我们发现对于最大值肯定是乘上最小值,然后就写个线段树出来。

然后考虑样例6 -6/1 -6,如果我选了 -6,那么系统一定会给我选 1 而非 -6

然后就对于两个区间处理最大最小值十字交叉即可。

然后观察第一个样例,如果第一个区间有 0 的话那么答案最大还能变成 0

第二个样例过不去了。

观察了一下,我发现选 -1 时,对方也只能选 2,能让分数变成 -2

然后我就想,真的是取“最小值”吗?

//如果有负数的话,我应该选择的是最大的负数啊,这样乘上去的debuff小一些

然后规律就很容易出来了。

//注意甄别:如果对方最大值是正数,就拿最大的负数,否则拿最小的负数
//正数同理:如果对方最小值是负数,就拿最小的正数,否则拿最大的正数 

线段树上得额外记录“最大的负数”和“最小的正数”。

但是最大的样例要跑 2.8 秒。

一般这种情况都是我开了过多的long long

删掉#define int long long后,第四个样例出现了众多的-2147483647

于是把所有线段树外的操作加上了(long long)

但是还是过不去。

发现自己给负无穷(4\times 10^{18}+9)配上了int类型。

然后就过了大样例,耗时 0.8 秒。

先跑一次全局最短路。

然后既然是 n^2,那么我们可以考虑枚举两个点。

要么枚举 AD,要么枚举 BC。

我选择了枚举 BC。

预处理每一个点到他距离 \le k且点权最大的。

但是有可能重合,所以要搞三个备胎,省的和ABC撞上。

写完了。

要特判 D\ne BA\ne C

过了大样例。

前一天还在想着这次 170 就够了。

没想到真的实现了 200 这一历史性的突破。

天空一片深灰,正如去年。

或许这也算给过往一个真正的告慰吧。

开始看C。一个显然的事实是,所有点必须在一个环上。

暴力有 40 分,先写吧。

写完了,但是样例清一色输出NO

观察样例解释。发现题目的要求是每个点能走到一个环上

也就是说,这上边的点,要么是环本身,要么在一条能连到环的链上。

我们把环给建好,一个个加入“在能连到环的链上”的点。

可以发现,这些点的出度都是 1

也就是说,限制一没用。

然后就可以写出暴力了。每次出度只要全为 1YES 否则 NO

然后发现有一个分只有单点修改。 套了棵线段树。 $50$ 分到手。赛后自测发现有 $60$ 分。 - 10.30 10:50 现在只剩下D了。 $250$ 分。 注意到 $k=1$ 的部分分。 于是预处理深度,父亲,前缀权值。 - 10.30 11:10 写完了 $k=1$ 的部分分。 然后观察到 $n$ 足够小的情况下可以预处理出所有的可能然后进行最短路。 - 10.30 11:20 写完了。这个部分分是真的多。 然后观察 $k=2$。 为什么他有专门的一个 $k=2$ 的部分分呢。 把树给画出来。把路线画出来。 嗯。这不就是那个什么怪盗基德吗。 $k=2$ 又多了一个部分分。 然后就去排队做核酸了。 - 10.30 12:00 VP结束。一看,有人花了两个小时AK了。 一看,有人T3用了神奇做法切了。