Skipping

题目链接:https://codeforces.com/contest/2023/problem/B
rating: 1700
题意:
给出长度为n的a和b两个数组,对于当前位置i可以进行两种操作:
①: 跳到小于等于bi且最近点。
②: 跳到小于i的最近点并获得ai分数。
每个点仅可访问一次。求能得到的最大分数。
1<=n<=4e5, 1<=ai<=1e9, 1<=bi<=n。

做法1:最短路。
建图,dijkstra找到每个点的最小代价

做法2:线段树。
fi为到i点的最小代价.
若bi<=i 则一定不必花费代价跳
若bi>i 将i+1~bi这个区间的代价 更新为min(fj, fi + ai) (先跳到bi再往回走)

posted @ 2024-11-16 10:18  Reu2s  阅读(60)  评论(0)    收藏  举报