码迷,mamicode.com
首页 > 其他好文 > 详细

zoj4062

时间:2021-05-24 07:11:01      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:答案   转化   class   math   存在   坐标   二分答案   ldo   开始   

题意

直线上有\(n\)个植物,第\(i\)棵植物坐标为\(i\),浇一次水会长\(a_i\)高。
你最开始在\(0\)点,执行\(m\)次操作。每次操作必须往左或右走一步并给走到的那棵植物(如果有)浇一次水。
最大化\(m\)次操作后最矮的植物的高度。

做法

二分答案,题目转化成,每个位置要至少经过几次,然后求最小次数。

考虑答案至少为\(1\)的情况:

结论1:存在合法解最终停留在\(n\)\(n-1\)

证明:
由于答案至少为\(1\),所以一定到过\(n\)
如果最后在\(i\)\(i< n-1\)),那么一定存在\(i\longrightarrow i+1\longrightarrow i+2\longrightarrow i+1\longrightarrow i\)
可以换成\(i\longrightarrow i+1\longrightarrow i\longrightarrow i+1\longrightarrow i+2\),反复通过调整法即可。

结论2:存在,最终停留在\(n\)\(n-1\),且方案为\(1,2,1,2,\ldots,2,3,2\ldots,n-1,n,n-1\)

证明:
解形成了一个欧拉路,中间可以调换,容易证明。

那么可以通过贪心得到次数。

zoj4062

标签:答案   转化   class   math   存在   坐标   二分答案   ldo   开始   

原文地址:https://www.cnblogs.com/Grice/p/14762326.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!