求助!奇怪的错误

P4168 [Violet] 蒲公英

怎么肥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 有可能是数据太水吧,亦或是说倒数第一个块与最后一个块当时可能是等价的?


|