怎么肥4 @ 2022-11-13 20:12:26
在分块的最后一块,如果这么写是对的:
if(R[t]<n) L[t+1]=R[t]+1,R[++t]=n;
这么写的话,是错的:
if(R[t]<n) L[++t]=R[t-1]+1,R[t]=n;
这两种写法在本题会得到不一样的答案
但是我在莫队中用了下面那个写法可以过
by _XHY20180718_ @ 2022-11-13 21:01:10
@怎么肥4 t在第二句话中是先执行后面的语句,再++,赋值语句一般实现执行后面的语句的。
by _XHY20180718_ @ 2022-11-13 21:02:48
感觉确实是错的额,比较显然吧?
by _XHY20180718_ @ 2022-11-13 21:04:41
可以帮你拆分一下你的第二句话:
if(R[t]<n)tmp=R[t-1]+1,t++,L[t]=tmp,R[t]=n
其中R[t-1]+1与R[t]+1不同额。
by 怎么肥4 @ 2022-11-13 21:32:12
@xiehuiying 明白了,感谢,那为什么莫队这么写没问题?
by _XHY20180718_ @ 2022-11-13 21:43:49
@怎么肥4 有可能是数据太水吧,亦或是说倒数第一个块与最后一个块当时可能是等价的?