zoj4062

题意

直线上有\(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\)

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

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

posted @ 2021-05-12 22:41  Grice  阅读(48)  评论(0编辑  收藏  举报