如果你看不懂题解
  • 板块P1799 数列
  • 楼主Wang1006
  • 当前回复2
  • 已保存回复2
  • 发布时间2025/6/30 15:25
  • 上次更新2025/7/1 10:24:53
查看原帖
如果你看不懂题解
525687
Wang1006楼主2025/6/30 15:25

这里给一种很新的状态设计模式,比前三篇题解的思路好想:

dpi,jdp_{i,j} 表示当前考虑到已经删过数的数列的第 ii 位,匹配到原数列的第 jj 位。

  1. jj。即比较 ii 是否等于 aja_j
  2. 不选。只需要从上一个状态转移即可。

综上,可得到状态转移如下:

dpi,j=max(dpi1,j1+[a[j]==i],dpi,j1)dp_{i,j}=max(dp_{i-1,j-1}+[a[j]==i],dp_{i,j-1})

代码也比前三篇题解好写:

for(int i=1;i<=n;++i){
	for(int j=i;j<=n;++j){
		dp[i][j]=max(dp[i-1][j-1]+(a[j]==i),dp[i][j-1]);
		ans=max(ans,dp[i][j]);
	}
}

诸位仙侠巨佬,请勿刷 tlqtj 等诸如此类了。

2025/6/30 15:25
加载中...