首页 > 其他分享 >P2345 [USACO04OPEN] MooFest G

P2345 [USACO04OPEN] MooFest G

时间:2023-11-15 13:00:29浏览次数:45  
标签:limits sum 区间 贡献 P2345 MooFest 一段 USACO04OPEN

按 \(v\) 从小到大排序,这样可以转化为 \(v_j\times|x_i-x_j|(i<j)\)。

CDQ 分治,返回时按照 \(x\) 从小到大排序。考虑如何计算前一段区间对后一段区间的贡献。假设前一段区间当前扫到 \(i\),后一段区间当前扫到 \(j\)。

每次拿出最小的计算贡献。如果 \(x_i\leq x_j\),则贡献为 \(\sum\limits_{k=j}^r x_k-x_i\);如果 \(x_i>x_j\),则贡献为 \(\sum\limits_{k=i}^{mid}x_k-x_j\)。

直接做不太方便,因为还要乘上右区间不同的 \(v\)。不妨将前者的贡献也挪到 \(j\) 向后移动时计算。等于 \(x_j\times(i-l)-\sum\limits_{k=l}^{i-1}x_k\)。

预处理前一段区间总和,扫的时候记录前一段区间当前前缀和即可。

标签:limits,sum,区间,贡献,P2345,MooFest,一段,USACO04OPEN
From: https://www.cnblogs.com/landsol/p/17833582.html

相关文章

  • MooFest G(USACO04OPEN)
    ​​传送门​​这题可以采用分治的方法,类似于归并排序的思路。其核心问题在于,我们怎么化简左右结合的步骤?如果我们只是单纯的分别计算左右两两的音量,那就是假的分治,实则是......