\(T1\),注意点与边不同阶时分着开,别开小了。
\(T2\)
当dp数组由于太大开不下时,可以用记忆化搜索代替。
最长不公共子序列:首先可推出\(f[i][j]=min(f[i-1][j],f[i][j-1])(a[i]==b[j]),f[i-1][j-1]+1(a[i]!=b[j])\),由于一段连续的\(a[i]!=b[j]\)可以一下全消掉,所以可以看一个\(a[i]!=b[j]\)的最靠近的\(a[k]==b[p]\),中间可以全消掉。由于\(i-j=k-p\),可设\(vector<int>f[x]\)代表\(i-j\)为\(x\)的所有\(i\),每次dfs时二分即可)