d.cpp

由于 s 关于位置单调不减,\(\mid 2 \times s_i − S \mid\) 在 \(s_i\) 最接近 二分找第一个满足 $2 \times s_{mid} \ge $ S 的位置 \(S \div 2\) 时最小:

res ,其代价 \(2 \times s_{res} − S\);

再与前一个位置 \(res - 1\) 的代价 \(S - 2 \times s_{res - 1}\) 取较小者即为最优。

单点修改一条边会使其后所有前缀和同时变化,用树状数组维护前缀和:修改边 \(p\) 时对该边位置之后的累计做区间差值更新(单点加 \(delta\),前缀查询),每次询问 \(O(\log n)\) 取前缀和

posted @ 2026-09-17 22:15  yingMC  阅读(5)  评论(0)    收藏  举报