
dp
动态规划相关题目
zipper112
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
状压dp
题目 思路: 可以枚举横着放小方块的情况,然后再枚举竖着放的情况原创 2020-06-29 11:20:57 · 141 阅读 · 0 评论 -
最长(上升/下降)子序列
很久以前学的算法了,当时学的乱七八糟导致后来我遇到就蒙,今天就把它记一下 洛谷板子题 思路: 实际上,说是动态规划,我觉着更像是贪心,对于求一个最长上升子序列,我们可以分为以下两个过程: 比较当前的数是否能接在上一个数上能就接上然后子序列长度加一 不能就从已有的序列中找出第一个大于等于自己的数然后替换掉 一很好理解,重要是二这个操作,我们可以想一下,当前已有的序列已经是固定的了,我们新来的这个...原创 2020-05-04 21:22:24 · 507 阅读 · 0 评论 -
nico和niconiconi
一个简单的dp,被我想复杂了… note:str.sustr(i,len)就表示str从i开始长度为len的子串note:str.sustr(i,len)就表示str从i开始长度为len的子串note:str.sustr(i,len)就表示str从i开始长度为len的子串 转移方程: if(substr(i,4)=="nico")dp[i]=max(dp[i],dp[i−3]+a);if(sub...原创 2020-02-04 22:14:11 · 296 阅读 · 0 评论 -
最短编辑距离(笔记)
原题:这里!!! 思路: 线性dp的经典问题,首先是 状态表示: 应该用一个二维数组表示即dp[i][j],表示A的前i个编辑到B的前j个需要花费的最小编辑,这种表示方法需要多加积累才能有所感觉。 接下来是 转移方程的推导: 推导的思路就是看dp[i][j]能由哪些状态转移过来(这不是废话么 ),由于每次可以进行三种操作,所以我们可以从操作上进行考虑 1.删除操作 想一下dp[i][j]要进行删除...原创 2020-01-27 22:41:28 · 143 阅读 · 0 评论 -
小 C 的 01 序列
题目: 小 C 的 01 序列 思路: 很明显这是一道dp,经过观察发现SnS_nSn的前一半是由Sn−1S_{n-1}Sn−1构成的,后一半则是Sn−1S_{n-1}Sn−1的反转,而且这两半的合并会在中间产生一个新的序列并且会出现周期循环,接下来看代码。 #include<bits/stdc++.h> #define ll long long #define INF 0x3f...原创 2020-01-24 20:04:59 · 352 阅读 · 0 评论