最终取答案时,这样是龊的。
for(int i=0;i<=A;++i){
if(f[n&1][m][i]<INF)ans=min(ans,calc(f[n&1][m][i],i));
if(g[n&1][m][i]>-INF)ans=min(ans,calc(g[n&1][m][i],i));
}
因为维护最小土豆价 g 数组初值为 -INF,中途运算可能大有 -INF的,但仍是不合法转移。可以选比 -INF 大一些的数或 0 来判断。
for(int i=1;i<=A;++i){
if(f[n&1][m][i]<INF)ans=min(ans,calc(f[n&1][m][i],i));
if(g[n&1][m][i]>=0)ans=min(ans,calc(g[n&1][m][i],i));
}