关于题解的温馨提示:
查看原帖
关于题解的温馨提示:
142549
hbhz_zcy楼主2021/12/27 11:46

该题大部分题解说f[i][j],里面存的值是左端点为j,能合并出i这个数字的右端点的位置
但初始化f[read()][i]=i+1;
实际上存的值是右端点位置+1
猜测这种做法为了方便判断转移是否合法,判一下f[i-1][f[i-1][j]]是否为0就可以了。

而我的代码中存的是右端点位置,判断函数+转移方程如下:
if(f[i-1][j]&&f[i-1][f[i-1][j]+1]) f[i][j]=max(f[i][j],f[i-1][f[i-1][j]+1]);
f[i-1][j]==0f[i-1][j]+1==1f[i-1][f[i-1][j]+1]不一定为0了。

2021/12/27 11:46
加载中...