首页 > 代码库 > 2014 8.8 第9场个人 排位

2014 8.8 第9场个人 排位


UVA 12657 Boxes in a Line

模拟


FZU 1876 JinYueTuan 不说话

view code


ZOJ 3684 Destroy

view code


ZOJ 3676 Edward‘s Cola Plan (总是看英文看很久,囧)

view code


ZOJ 2899 Hangzhou Tour

 


ZOJ 3724 Icecream 线段树,离线,挺经典的

sum[n]表示距离的前缀和

情况1:

[MN(%WO~K65~`[42TBNJRRT

如果是询问从u到v的最短距离,(a到b是一条捷径,长度为len)

如果不走捷径dis1 = sumv – sumu;

如果走捷径 dis2 = sumv – sumu +len - (sumb-suma)。

走不走捷径就看len-(sumb-suma)是否小于0,(等于0,走不走无所谓)

对于多个捷径,且走捷径的情况,走len-(sumb-suma)最小的那个捷径

情况2:

ZW(AVEPCF)3EAIP`)SFF``8

如果是询问从u到v的最短距离,(a到b是一条捷径,长度为len)

假设不走捷径为绕一圈, 即dis1 = sumn – sumu+sumv;

走捷径dis2 = suma – sumu + sumv – sumb + len;

要不要走捷径就看 (suma-sumb +len)-sumn是否大于0,

当然这种情况肯定是要走捷径的的,这只是在有多个捷径的时候判断走那个捷径最短的一个方法。

走 (suma-sumb +len)-sumn最小的捷径。

至于那些最小值就是用线段树去维护。




view code