![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
二货RK
菜鸡一枚
展开
-
洛谷 P1021 邮票面值设计
洛谷 P1021 邮票面值设计 要求一个组合,很明显是用dfs来搜索,那么怎么判断呢? 用背包!!! dp[i] 表示拼凑出 i 这个数的最小邮票数,然后统计dp [i] <= n 的个数即可 在dfs中有一个边界问题,就是:当你在选择下一个数的时候,会发现虽然可以知道他一定 >= 上一个数,但是其上边界却并不明了。 但是经过几次尝试就会发现,其上界值一定 <= 当前最大的连续值...原创 2020-02-09 11:45:13 · 223 阅读 · 0 评论 -
洛谷 P1020 拦截导弹
洛谷 P1020 拦截导弹 动态规划经典题 今天闲着无聊刷来刷洛谷上以前做过但是没有在洛谷提交的题目,忽然发现以前的基础确实很有必要温习。 首先,看下n2做法,n2的动态规划很简单,核心代码是下面的getans 函数, 可以看到两问都用同一段代码完成了,f [ maxn ] 代表的是最长不上升子序列的长度,而dp [ i ]则是第二问的答案,是可以有定理证明的就是一个最长上升子序列,但是。。。我...原创 2020-02-07 12:51:38 · 257 阅读 · 1 评论 -
洛谷 P1026 统计单词个数 字典树+动态规划
洛谷 P1026 统计单词个数 字典树+动态规划 题目大意:给你一串字符串,求将这个字符串分成k块的,每块单独计算包含单词个数,他们的总和的最大值,每算一个单词之后,该单词的起点不能再被计算另一个单词。 首先建立对已有单词的字典树,为之后的计算区间内的单词树做准备 计算num[ i ] [ j ],代表i到j区间内,有多少个位置能作为单词的起点 然后初始化dp[ i ] [ i ]和dp[ i ]...原创 2019-11-04 23:51:45 · 332 阅读 · 0 评论 -
牛客字符串训练 NOI 2014 动物园
牛客字符串训练 NOI 2014 动物园 这道题应该算是一道比较简单的动态规划了,因为很容易就会发现存在递推的关系。 对于每一个前缀,我们先求得其nxt数组,得出在该位置的的最长匹配,在求nxt数组的同时,我们也可以求得num数组,但此时求得的num数组并没有去重 紧接着我们就可以计算答案了,但是计算答案的时候需要注意num数组的去重,这个方法很巧妙,就是利用num数组和nxt数组相似的性质,一...原创 2019-08-06 08:30:52 · 136 阅读 · 0 评论 -
暑期个人赛题目 CF赛题 How many trees
暑期个人赛题目 CF赛题 How many trees? 题目链接 http://codeforces.com/problemset/problem/9/D 一开始看到这道题还认为世道数据结构,比完之后才发现这是一道动态规划的题目,啊啊啊,是我太菜 虽然这道题左学长用了一个四维的DP,但其实只需要3个循环加一个二位DP数组即可 dp [ i ][ j ]表示i个点在高度为j的情况下所得的组合数 但...原创 2019-08-06 09:15:02 · 159 阅读 · 0 评论 -
CCPC Final 2017 Alice's Stamps
CCPC Final 2017 Alice’s Stamps 和题解说得一样,一道简单的DP,dp [ i ] [ j ]代表从编号1到编号i,使用 j 个set所得的最大值 初始化为0,然后就可以DP了,最后所得的dp [n] [k]就是答案(网上说是背包的变式) 转移方程和思路是这样的: 1、首先预处理,在输入的时候就能将每个点区间所能到的最远右端点记录下来,代码如下 for(int i=1...原创 2019-08-13 21:26:02 · 251 阅读 · 0 评论