贪心加dp,不太难,思路跟第二题类似。dp1到n,维护dp【i】,为到i号基站能赚的最多钱。
先对所有方案排序,基于每一个方案的r排序
排序完之后进行dp,
对于每一个位置
用一个now记录当前最小(指r最小)的方案,假设为J号方案吧从J.l到J.r号基站,赚J.val的钱
if(J.r>=i){
dp[i]=dp[i-1];//当前位置不能覆盖新的方案,那就数值没有变化
}else{//说明加入新的基站后至少有一个新的方案可以落实,
while(J.r==i){//可能同时多个方案的r能加入
dp[i]=max(dp[i-1],dp[J.l-1]+J.val;//核心转移方程,如果加入当前方案,从当前方案的J.l左边一位转移过来。
}
}
得到dp【n】,输出即可。