RT,今天我写树形dp,使用辅助数组进行转移,然后写出了以下代码:
for(int i=e[x].size()-1;i>=0;i--){
if(e[x][i]==fa) suf[i]=suf[i+1];
else suf[i]=suf[i+1]*(dp[e[x][i]][0]*2+dp[e[x][i]][2])%mod;
}
它在本地一切正常,甚至连-Wsign-compare都没有(我开了-Wall -Wextra),但是它在CF上RE了。
经过检查,e[x].size()是unsigned类型的,当压根没有边的时候它减一自然溢出变成了4294967295。
我想问:
- 为什么在本地一切正常?
- 在那些地方会出现这种现象?
- 如何让Dev检测出这种问题(或者说不能)?