? #6

我发明了严格 \(O(n+m)\) 的 dijkstra!并且过掉了所有样例!

(甚至 AC 了大部分点!


链接:link / A B C D
题解:洛谷题解区

时间:4h (2025.11.20 07:40~11:40)
题目数:4
难度:

A B C D
\(\color{#52C41A} 绿\) \(\color{#FFC116} 黄\) \(\color{#52C41A} 绿\) \(\color{#3498DB} 蓝\)
*1600 *1400 *1700 *2100

估分:100 + 100 + 69 + 29 = 298
得分:8 + 100 + 69 + 29 = 206
Rank:1/6


场祭

读题。

A 思考一会儿后,发现可以对 \(s,t\) 都跑一遍 dij 转化成「统计满足 \(\min(a_u + b_v , a_v + b_u) \le k-l\) 的无序 \((u,v)\) 对数」,但是这个 min 很不好处理,考虑拆开,卡了 10min+ 才发现可以根据 \(a_u + b_v \le a_v + b_u \Longleftrightarrow a_u - b_u \le a_v - b_v\) 来做,排个序然后上权值线段树就好了。

写写写,大约 1.5h 左右才过掉。

原来 B 是签,直接滑动窗口秒了。

开 C,特殊性质是容易的,注意到有结论最多能选 \(2\) 个数,且 \(i,j\) 同时被选当且仅当 \(i<j \land a_i < a_j\),直接枚举就做完了。

然后考虑一个复杂度较高的 dp,发现直接令 \(f_{i,x,y}\) 为前 \(i\) 个数,当前左右手中分别为 \(x,y\) 的最大贡献,就很能做转移了,考虑不选、没匹配、匹配了三种情况即可,然后发现除了不选以外,只有 \(O(n)\) 个式子,且所有式子要不是 \(O(1)\) 转移,要不是从 \(\max _x \{ f_{i-1,x,y} \}\) 转移,所以很容易维护一个 \(mx_y\) 优化到 \(O(n)\) 的转移,进而只保留 \(x,y\) 这两维并扔掉不选的转移,就可以优化到 \(O(n^2)\) 了,有很多分。

看起来似乎只维护 \(mx_y\) 就是正解?思考了 10min 发现不会。

很好写,轻松过掉了所有样例,然后把特殊性质写了,拿两个代码拍了拍发现对完了。

开 D,暴力 13pts 枚举全排列,两两不同 16pts 直接贪,其它的不会了。

终于打满了一次喵!


补题

原题:

A:JOI 2024 Final 洛谷 P10206
B:JOI 2025 Final 洛谷 P11663
C:JOIG 2025 洛谷 P11727
D:JOIG 2025 洛谷 P11726

A 死因在开头,然后据知情人士提醒:

太有道理了。

A 看了眼题解,发现其实直接二分就可以,有神秘结论证明了 \(a_u + b_v\)\(a_v + b_u\) 不可能同时 \(\le k-l\),不过作为考场上不可能注意到这个结论的人来说,大力 ds 还是很好的选择的。

补 C,是简单题,注意到把没有产生贡献的数扔掉后,最终选择的数一定是若个 \(\tt AA\)\(\tt ABAB\) 拼起来的结果,而没有产生贡献的数扔掉一定不会更劣,于是直接 dp 即可。

补 D,是不难题,首先发现若交换 \(x,y\) 则必须满足 \(x,y\) 相邻;然后推广到 \(3\) 个数,发现交换 \(x,y\) 后交换 \(y,z\) 则必须满足 \(x,y\) 相邻,\(x,z\) 相邻;继续推广到一堆数,手玩一下样例,考虑记录一个 \(t_x\) 表示 \(x\) 最初的位置上现在是什么,那么交换 \(x,y\) 则必须满足 \(t_x , t_y\) 相邻,同时需要交换 \(t_x , t_y\)

于是按照限制建边,最终会得到一堆链(如果存在不是链的情况那就一定无解),贪心地构造即可。

正着做也能做,不过需要做几步处理,所以可以直接反过来做,正确性是因为交换操作是可逆的。


天依宝宝可爱!

posted @ 2025-11-20 12:04  little__bug  阅读(3)  评论(0)    收藏  举报