【比赛】CSP-S 2024 游记

CloudWings / 2025-01-25 / 原文

【比赛】CSP-S 2024 游记

1 回顾

T1

10min

一开始还是有点想歪了,仔细想一下然后过了。

T2

1h

非常需要总结的一道题。

几乎看完题就出思路了,注意到算是一道小模拟,所以开打之前先理了一遍思路,这很好。

但是,为什么这道简单题浪费了这么久呢?

打的时候太谨慎?打完第一问就就开始测大样例检查?

不!这其实挺好的。

当时测大样例的时候发现第一问多了点,然后开始输出单组数据进行调试。

这个时候问题出现了,输出浮点数用 %d 我吐了啊,\(p\) 全部输出 \(0\),然后单独测的时候总能过,合起来总是不能过,我以为我 ub 导致了一些神秘错误。。。然后查了半个多小时。甚至自己手写了 lower_boundupper_bound

全程丝毫没有怀疑审题出问题,在正确输出 \(p\) 之后,猛然发现一切的一切都是符合预期的,这时候回去看题,超速是严格大于啊啊啊!!(题面甚至加粗了……

这个时候心态有点崩了,迅速把取等删去,然后冲完贪心,发现第二问又挂了……

查了大概 5min,发现输出 m-ans 打成 n-ans 了……

T3 (T4)

剩下的大部分时间吧。

同样非常需要总结的一道题。

深呼吸,开 T3,有点怪但是大概率是贪心/dp,先想性质,发现:

  1. 发现把所有的相邻的元素,连边之后,分两种颜色,那么两种颜色的线段最多只会在端点处交错一个;
  2. 一个元素要对答案产生贡献,和其最近的同色匹配一定是不劣的。

这很 dp 啊,我们把任意一个颜色视作主元,定义 \(f_i\) 表示钦定 \(i\) 为主要颜色且和 \(lst[a[i]]\) 匹配产生贡献的最大答案。

然后枚举 \(lst[a[i]]\) 之前那个染成主要颜色的点 \(j\),有转移:

\[f_{i}=\max_{j=1}^{lst[a[i]]}f_j+w(j,i) \]

其中 \(w(j,i)\)\((j,i)\cup\{j-1,lst[a[i]]+1\}\) (后面并上的这个集合需要根据下标稍微判一下)中所有 \(a_k\times(\text{出现次数}-1)\)

大概 30min 的时候打了一个 \(O(n^3)\) 然后发现比大样例小了一点,分析了一下大样例发现性质一有点问题,实际上包含也是可以的,但是包含的那个颜色必须是相邻的。于是我们再输入的时候处理掉这种情况,这样性质一就对了,并且不用考虑算 \(w\) 的时候的下标问题。

然后就过大样例了,\(O(n^2)\) 是好改的,应该再优化一下就能过了。心情稍微好了一点,感觉还是有望 300+ 的。

这个时候去看了一眼 T4,感觉像一个巨型 ds 模拟,而暴力可能也就 32pts,所以还是先去冲 T3 的 50pts 了。

于是冲了两个多小时的 T3 优化没优化出来……一直在想直接优化,然后开始想性质,发现好像并没有什么用。


2 总结

估分:\(100+100+50+0\)

没脸见人了……人均三道啊…………

T3 下来看了一下,大概有两种做法:

  1. 依赖于值域的 \(O(nV)\) dp,用线段树显然优化掉;

  2. (from Super_Cute.

    跟我思路差不多,都从 \(lst[a[i]]\) 转移过来的,不同的是我直接去枚举 \(j\) 那一步转移,他直接用 \(lst[a[i]]+1\) 转移过来了。

    (考场上我好像也想过用某一个 dp 值来平替整个转移的过程的,但是没有深入想,害怕又在一个思路里面陷太久了(但是实际上几乎就没想,然后后面就忘了。

    (教训就是,思路一定要想 bfs 一样,想到一个思路就记录下来,有这么多时间也不缺这一两分钟啊。

还是实力不够……题见的还是不够,还有就是总结有点畸形了,对特定一道题的解法过度总结了,而缺失了对思维方式和解题技巧的总结。