青岛区域赛 二分答案

发布时间:2020年05月16日 阅读:246 次

Plants vs. Zombie acm 

https://blog.csdn.net/qq_44564169/article/details/97026286

https://blog.csdn.net/lzc504603913/article/details/83824416

题意:给你一个数轴,有n个点表示有n个植物编号为从1到n,你起点在0,每个点有机器人每路过一次就可以浇一次水,每次浇水植物都会增加ai点防御,初始防御值都是0,机器人一共可以移动m步,最后整体的防御取n个中最小的那个,问你最后的带最大的防御是多少?,可以移动出1到n的范围,但是不会增加防御值。


思路:要是最小的防御值最大,那么最小的那个一定要变大,不然是无法提升的防御力力的,想要提升防御力最小的那个防御力而使最小的移动步数,所以最好还是挨个使当前最大,顺便照顾后面的,很容易想到二分答案,从1到n走,当前的防御值不满足时往后来回走,顺便给后面的浇水,满足了当前的后面的也有一定的防御力了,达到了最优。


注意:不是一定要枚举到最后一个的,如果在浇水使倒数第二个满足的时候,已经让最后一个满足了,就不需要在走到最后一个了。


Tag:
相关文章

发表评论: