CSP-2024 第二次

挂 corner case 了,哈哈

A

对于值域上每个连续的长度为 L 的段,其贡献为 l2,并查集维护连续段即可。

B

先把答案分解成 O(logn) 个子树和,然后注意到点 x 的子树和是 x 的一次函数,且这个一次函数 Fl 只与 x 点的区间的长度 l 有关。

发现 Fl 的系数可以 O(logl) 递推,然后就做完了。

C

发现对每个点找最优匹配很没前途,所以考虑分治合并答案。

先把 max 分讨掉,ap+aq>bp+bqapbp>bqaq

于是要求的就是 apbp>bqaq(p,q)ap+aq 最小值,以及 apbp<bqaq(p,q)bp+bq 最小值,

把所有 papbpqbqaq 插入同一棵权值线段树,在每个节点上维护答案即可。

D

答案就是每株杂草被拔掉之前走的距离之和,所以可以考虑每株杂草的贡献,

可以发现每株杂草的初始贡献为其到 k 的距离,向其靠近一步贡献不变,远离一步贡献 +2

fi 表示走到 i 时贡献和的最小值,则有:

fi+2(i1)(sjsi)fjfj+2(nj)(sjsi)fi

(可以钦定 ikj,因为推一下式子可知 i,jk 同侧的转移没用)

答案就是 f1 或者 fn(容易发现 f1=fn)。发现转移有环,所以考虑模拟 Dijkstra。

注意到 k 向左、向右 f 值分别单调递增,则 Dij 的过程中已经确定的位置一定是包含 k 的一个区间 [l,r]

从这个区间转移到 fl1,fr+1,则下一个确定的位置一定是其中较小的一个,斜率优化转移即可。

posted @   Jijidawang  阅读(140)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示