P2605求思路
  • 板块题目总版
  • 楼主sundyLIUXY
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/2/3 11:30
  • 上次更新2023/10/24 01:55:42
查看原帖
P2605求思路
706737
sundyLIUXY楼主2023/2/3 11:30

P2605基站选址

题解看不懂啊

为什么要用线段树维护维护f+pay的最小值?第一篇题解说

pay[k][i]pay[k][i]表示从第kk个村庄到第ii个村庄的赔偿费用之和

对于每一个村庄,都有一个范围内需要建立基站,否则就要赔偿,那么我们设第ii个村庄的范围为[L,R][L,R],如果正在考虑RR处建不建基站,那么有下列情况:

1、不在RR处设立基站,那么对于村庄ii来说,上一个基站在[1,L1][1,L-1]这个区间的话,就要赔偿村庄ii了,因为[L,R][L,R]这个区间没有建基站,那么我们就要快速的在[1,L1][1,L−1]中区间加村庄ii的赔偿费用了,我们就以线段树为例

2、在RR处建立基站,那么也就相当于最后一个基站设立在[1,R1][1,R-1]这个区间中,找一个费用最小值来转移嘛,还是线段树

所以我们要开一个线段树来维护 f+payf+pay 的最小值,要有区间加法和区间查询的操作

那么为了上面的操作,我们还要开几个数组辅助

st[i]st[i]表示第ii个村庄对应区间的左端点LL

ed[i]ed[i]表示第ii个村庄对应区间的右端点RR

那么当edx=ied_x=i的时候,如果ii处不建,那么就要区间加上pay[x]pay[x]的值,然而可能有很多点的eded都是ii,所以我们用链式前向星来保存

什么是第$i$个村庄对应区间?f是啥?

2023/2/3 11:30
加载中...