
dp
一所悬线
这个作者很懒,什么都没留下…
展开
-
首尾相连数组的最大子数组和
推荐博客:https://blog.youkuaiyun.com/lin_disguiser/article/details/50821885 当时想到的是第一个思路,但不如第二个好,第一个时间复杂度比第二个要高。 #include <iostream> #include <cstdio> using namespace std; #define inf 0x3f3f3f3f #...原创 2018-12-16 16:31:40 · 206 阅读 · 0 评论 -
D. GCD Counting 树形dp
题意:一棵树,每个节点有权值,找一条gcd不唯一的最长路,输出长度。 思路:gcd不唯1,即两个数有相同的素因子,dp[i][j]就表示以i个节点通过这个数的第j个素因子最长的子链,然后路的长度就是在遍历的时候选两个最长的相加,dfs遍历一遍树不断更新答案。 #include<bits/stdc++.h> using namespace std; int dp[200005]...原创 2019-01-14 21:36:10 · 293 阅读 · 0 评论 -
筱玛的字符串
https://ac.nowcoder.com/acm/contest/342/E 题意:给一个匹配的括号串,首先选择一个区间(可以不选),让字符反转,然后隐藏其中一些位置,变成?,让你还原,问可以还原多少种情况。 思路:dp[i][j][k],i表示处理的位置,j表示(比)多几个,k表示当前位置的状态,1表示没有进行反转,2表示正在进行反转,3表示已经完成反转。转移的时候对不同字符根据不同状...原创 2019-01-13 20:59:53 · 229 阅读 · 0 评论 -
String painter HDU - 2476
题意:给两个字符串,通过涂色把第一个串构造成第二个串,每次将一个连续区间涂成一种颜色,后涂会覆盖之前的。 思路:之前做过类似的是相当于在空串上构造第二个串,现在类似的可以同样进行那个操作,然后再一次区间dp,去求最小次数。 在得到了一个s2串的相关dp数组后,我们考虑s1串,如果s1串和s2串在某一个点相等了,即表示这一点可以不用特意去刷一次,那么便可以由这一点来分成两个区间。 如果用 an...原创 2019-01-13 20:32:06 · 216 阅读 · 0 评论 -
Rabbit的工作(1) dp
题意:给你n和k,和一个长度为n的字符串,字符串中的0表示休息,1表示工作,连续工作会损耗连续的体力值,从1开始,但是休息后就重新计算体力值,一共最多损耗k点体力值,求解最多工作多少天 题解:动态规划,状态定义为,dp[j][k]表示在第i天之前工作j天,并且已经连续工作k天的情况下的最小体力花费,最后扫一遍,保存满足条件的j的最大值即可,转移过程很好理解。 https://ac.nowcod...原创 2019-01-11 20:36:49 · 205 阅读 · 0 评论 -
K - Count the string HDU - 3336
https://cn.vjudge.net/problem/HDU-3336 题意:求一个字符串中所有前缀在这个字符串中出现的总次数(可重叠)。 思路:利用next数组dp一遍,然后求一遍dp的总和。 #include<iostream> #include<stdio.h> using namespace std; #define ll long long #def...原创 2018-12-26 11:41:01 · 218 阅读 · 0 评论 -
The Battle of Chibi HDU - 5542
https://cn.vjudge.net/problem/HDU-5542 题意:求从长度为n的序列中最多能找出长度为k的严格递增子序列的个数。 思路:dp[i][j],表示第i个数 作为子序列的第j个数的序列有多少个。 for (int i = 0; i < n; i++) { dp[i][1] = 1; } ...原创 2018-12-25 20:34:50 · 143 阅读 · 0 评论 -
D. Easy Problem dp
题意:给你一个字符串,让你删除某些字符使得这个串的所有子串不包括hard,删除每个字符有花费,求一个最小花费。 思路:dp[i][j]表示到第i个字符可以组成hard的前j个字母,然后对每一个字符,递推转移一下。 #include <iostream> #include <cstdio> #include <cstring> #define ll long...原创 2018-12-29 11:33:58 · 224 阅读 · 0 评论 -
P4170 [CQOI2007]涂色 区间dp
假设你有一条长度为5的木版,初始时没有涂过任何颜色。你希望把它的5个单位长度分别涂上红、绿、蓝、绿、红色,用一个长度为5的字符串表示这个目标:RGBGR。 每次你可以把一段连续的木版涂成一个给定的颜色,后涂的颜色覆盖先涂的颜色。例如第一次把木版涂成RRRRR,第二次涂成RGGGR,第三次涂成RGBGR,达到目标。 用尽量少的涂色次数达到目标。 很简单的区间dp,dp[i][j]由dp[i][...原创 2018-12-27 21:00:51 · 174 阅读 · 0 评论 -
P2530 [SHOI2001]化工厂装箱员
状态:f[i][j][k][m] : 前i个物品 当前手中有j个"A" k个"B" m个"C"时的最小卸货次数 很明显对于第i个物品可以 1:)只取出来 暂时不装进去 前提就是当前手中货物数量<10 2:)取出来后 装进去 没有前提 所以转移方程就出来了: f[i][j][k][m] = f[i-1][j-1][k][m] if(ob[i]=='A' && j) ...原创 2019-03-06 22:15:39 · 186 阅读 · 0 评论