随笔分类 - 线性DP
摘要:满分做法: $dp[i][j][k][1/2]$表示到a串的第i位置为止使用了$k$个子串匹配到b串的前j个且当前i位置选还是没选的方案数,因为当前只和$i 1$有关,所以第一维可以滚动。 考虑转移当$a[i]==b[j]$时,$dp[val][j][k][0]=(dp[val^1][j][k][0
阅读全文
摘要:满分做法: 这道题蛮难想的,$dp[i]$表示到i位置的最大操作数,$11111101$和$1011111$这两种情况我们可求出它的最大操作数为长度$ 2$,并发现整个序列的操作数可以拆分成几个小序列的最大操作做次数之和。 所以我们要记录$l[i]$表示左边离$i$最近的$0$的位置,并得出转移:
阅读全文
摘要:因为第$i$个数最终所在的位置,只与$i$之前所去掉的个有关与具体去掉哪些数无关,所以具有无后效性,可以DP。 方法一:$dp[i][j]$表示到i位置留j个数的匹配值。 当$a[i]=j$时,$dp[i][j]=max(dp[i][j],dp[i 1][j 1]+1)$; 当$a[i]\neq j
阅读全文
摘要:30分做法: dp[i]表示青蛙跳到位置i经过的最小石子数,从dp[i-j]转移过里,s<=j<=t。初始状态:dp[0]=0; 最后统计答案是从[n,n+t)区间中找出最小dp值。(n+t青蛙跳不到,所以开区间) 满分做法: 观察数据范围l<=1e9,这么大数组肯定存不下来,所以考虑路径压缩。因为
阅读全文

浙公网安备 33010602011771号