题目大意
在最开始Alice离终点的距离为D,第i天,Alice会有一个行走距离a[i],如果当前距离s>abs(s-a[i]),那么s就更新为abs(s-a[i]),s变为0时到达终点。
先给出若干询问,每次询问一个位置x,问能否通过改变a[x]的值,来使得Alice经过n天后不能到达终点
1≤q,n≤105
题解
显然我们可以预处理出pre[i]表示经过前i天之后的s,那么一次询问x其实就相当于我们可以设置初始距离 s(0≤s≤pre[x?1]) ,使得Alice不能到达终点
设suf[i]表示要使Alice从第i天开始到第n天不能到达终点的初始距离(第i天开始)的最小值。
考虑如何处理suf[i]
显然suf[n]=1
然后对于 1≤i<n
首先很显然的 suf[i]≥suf[i+1] ,因为如果这个不成立,那么suf[i+1]一定会更小
考虑a[i]与suf[i+1]的关系
如果a[i]/2下取整大于等于suf[i+1],那么suf[i]=suf[i+1],因为显然,如果这样的话,a[i]是没有影响的,而这样一定可以就是最小
否则,如果suf[i]<a[i],那么abs(suf[i]-a[i])一定小于 suf[i+1],那么合法的就只有suf[i]=a[i]+suf[i+1]
Done