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\)。
证明:
解形成了一个欧拉路,中间可以调换,容易证明。
那么可以通过贪心得到次数。