ことばがありあまれどなお、 このゆめはつづいてく|

trsins

园龄:3年10个月粉丝:18关注:2

【做题记录】USACO04OPEN MooFest G

  • USACO04OPEN MooFest G

    • 算法:cdq 分治

题目:

定义 ans(i,j)=max{vi,vj}×|xixj|,求

1i<jnans(i,j)

1n2×104

题解:

首先按照 v 排序对吧(升序)。

考虑如何解决 pos

假设目前需要知道区间的第 x 头牛(第 x 头牛在左边,且右边有 k 头牛)的 ans=i=1kmax{vi,vx}×|xixx|,设有 y 头在右边的牛的 pos 值小于等于 posi

pj=i=1jvj,qj=i=1jvi×posi,则

i=1kmax{vi,vx}×|posiposx|=i=1kvi×|posiposx|=(i=1yvi×(posxposi))+(i=y+1kvi×(posiposx))=posx×((i=1yvi)(i=y+1kvi))+((i=y+1kvi×posi)(i=1yvi×posi))=posx×((2i=1yvi)(i=1kvi))+((i=1kvi×posi)(2i=1yvi×posi))=posx×(2pypk)+(qk2qy)

然后发现把 pos 排序就做完了。

本文作者:trsins

本文链接:https://www.cnblogs.com/trsins/p/15814806.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   trsins  阅读(60)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示