专栏文章

题解:P13345 [EGOI 2025] IMO

P13345题解参与者 2已保存评论 1

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
1 条
当前快照
1 份
快照标识符
@minsnu6x
此快照首次捕获于
2025/12/02 07:42
3 个月前
此快照最后确认于
2025/12/02 07:42
3 个月前
查看原文
先求出最终的排名,那么挖掉一些位置之后每行的和有取值范围 [li,ri][l_i,r_i],其中 ri=li+cikr_i=l_i+c_ik。令 ordiord_i 表示第 ii 名的原始标号,那么要求 ri+1li[ordi>ordi+1]r_{i+1}\leq l_i-[ord_i>ord_{i+1}]。直接从上往下 dp,记录当前 lil_i 的删除个数最大值。对于行内需要处理和为 xxyy 个数是否合法,压成一个二进制数可以处理转移。值域大小是 mkmk,这样做的复杂度是 O(nm2k)\mathcal O(nm^2k)
上述做法的状态以值域为基,其大小为 mkmk,很不好优化。令 SiS_i 表示初始每个人总分数,可以看成数轴上初始有 nn 个初始为单点的黑色区间 [Si,Si][S_i,S_i]。每次删除一个点会导致 [li,ri][l_i,r_i] 长度 +k+k,而数轴的总长 mk\leq mk,因此答案 m\leq m,尝试以此作为状态。那么最终 [li,ri][l_i,r_i] 是以 SiS_i 开始拓展的线段,最多拓展到 [Si1,Si+1][S_{i-1},S_{i+1}]
处理 fif_i 表示使得前面删 ii 个点所需的最大 lil_i。和为 xxyy 个数是否合法中,xx 只关心到 Si+1SiS_{i+1}-S_i。从 fff\to f' 的转移考虑填表法,枚举 fpf_p 的转移,当前删除了 qq 个,找到 fpqk[ordi>ordi+1]\leq f_p-qk-[ord_i>ord_{i+1}] 的最大点作为 fqf_q,要求 Si+1\ge S_{i+1} 否则终止。对于每个 pp 双指针找到这个转移点即可。
时间复杂度 O(nlogn+nm+m3kω)\mathcal O(n\log n+nm+\frac{m^3k}{\omega}),因为中间可以 bitset 优化一下背包,因为只关心 0101。寻找后继也可以直接在这个 bitset 上做。

评论

1 条评论,欢迎与作者交流。

正在加载评论...