首页 > 其他 > 详细

DP刷题记录

时间:2020-01-17 23:42:33      阅读:61      评论:0      收藏:0      [点我收藏+]

\(DP\)太菜了,开个随笔稍微记录一下

时态同步

就……求出最长的,然后树上模拟??

然后……数组忘了调大+\(sb\)错误\(WA\)了两发

低价购买

这都能蓝?黄的差不多

问最长严格下降子序列长度,和数值不同的最长严格下降子序列个数

第一问\(O(n^2)dp\),第二问我们发现,只要边\(dp\)边记录次数,然后往前更新答案的时候遇到同样的数字就\(break\)就行了

道路游戏

\(s[i][k]\)表示在\(i\)时刻\(k\)这个位置的前缀和,注意每个时刻机器人位置都变化所以这个前缀和是错位的……

然后就可以得到\(O(n^3)\)\(dp\)方程:\(f[i]=max\{f[i-k]+s[i][j]-s[i-k][(j-k+p*n)\%n]-w[(j-k+p*n)\%n]\}\)

其中\(i\)是时间,\(j\)是当前位置,\(k\)是设定的移动距离

然后卡过了

为了有脸还是优化一下

然后我们变形一下方程得到 \(f[i]=max\{f[i-k]-s[i-k][(j-k+p*n)\%n]-w[(j-k+p*n)\%n]\}+s[i][j]\)

那单调队列维护一下前面这个\(max\)里的东西就好了

写起来稍微有点麻烦

统计单词个数

先求出\(f[l][r]\)表示\([l,r]\)内能分出多少个单词,只要枚举\(r\)然后倒推\(l\)就可以\(O(n^2)\)实现

然后\(dp[i][k]\)表示到\(i\)分了\(k\)段的最大答案,注意\(k<=i\)

DP刷题记录

原文:https://www.cnblogs.com/knife-rose/p/12207415.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!