1004
题意:给出数列a,数x初始为0,依次加,当时x变为0,不断对x进行操作,问第一次在第几轮,或判断无法满足。
如果没有将小于0的x变为0这一操作,答案很容易求,并且有一个很明显的感觉,当x一轮一轮不断变大时,情况的出现次数会越来越少,直至不会出现。我们沿着这个方向思考
我们先模拟一下操作
令b为a的前缀和,那么第一幅图为b的图像,这不是最终结果,他没有改变小于0的x
那么考虑每次把负的x提到0,都加上了一个数,如图中的红色所示,我们将他们都移到第一个图(黄色部分),就可以清晰地发现,这一轮内加上的数即为的最小值(准确来说是最小值的相反数)。一轮操作后,x变为(图中绿色部分)
一轮操作后,我们要考虑的正负性了,至于原因可以看一下分析
对于,在第二轮,x初始为,如图:
b整体上升了x,也就是绿色和粉色部分,此时,可以清晰地看出b整体都在0的上方,不会出现小于0的情况,并且每轮都在递增,因此不用考虑x<0的情况,最大值也没有上限。
对于,如图:
经过一轮后,与的情况相同,整体在0的上方,但是我们要注意,此时x每一轮的最大值限定在了红线处,不会再增加
对于,如图:
经过第一轮,仍然还是有一部分在0以下,因此,和一样,最大值上限在红线部分
至此,我们可以知道,当时,暴力求解第一轮后,可以通过找规律得到答案,而对于,后面所有轮次都和第二轮相同,因此暴力求解前二轮即可。
找规律的具体方法:先暴力求解第一轮(如果已经达到m输出1),得到第二轮的初始值x,一轮会增加,再得到每轮达到最大值为mx,考虑m一定是由x加上一些再加上mx,答案为(需要取整)