DP
LSlong127
re_reality
展开
-
Tree(树形dp)
题目链接:Tree题意:给你一棵树 ,让你求树的直径的长度和数量。思路:如果单纯求树的直径的话, 可以用两次dfs解决, 但是这样只能求出直径,无法求出数目了, 要想连同数目一起求出来, 还得枚举所有的叶子, 这样肯定超时, 所以用树形dp, 在记录直径的同时记录数量。 记录直径的原理就是, 任取一点当根, 一直搜到底, 然后开始往上更新长度, 当碰到一个点有不止一条链的时候,开始更新他的...原创 2019-12-02 18:23:43 · 234 阅读 · 0 评论 -
Pick The Sticks(01背包)
题目链接:Pick The Sticks题意:往长为L的线段上覆盖线段,要求:要么这些线段都在L的线段上,要么有不超过自身长度一半的部分在线段外面,最多有两条这样的线段(在两头)。思路:一眼看上去就是01背包,所以设 dp [ i ] 表示容量为 i 时的最优解。这样显然不能够表示一个状态,因为并非所有线段都完全被覆盖,所以考虑再增加一维。dp [ i ] [ j ]表示容量是 i 时,...原创 2019-08-12 10:55:39 · 447 阅读 · 0 评论 -
The Battle of Chibi(树状数组+dp)
题目链接:The Battle of Chibi题意:问你序列中长度为k的上升子序列有多少个。思路(转自博客:HDU 5542 - The Battle of Chibi - [离散化+树状数组优化DP]):首先,不难想到应当假设 dp[i][j] 代表以 a[i] 为结尾的且长度为 j 的严格单增子序列的数目,那么自然地,状态转移就是 dp[i][j]=∑dp[k][j−1],其中 k...原创 2019-08-10 21:07:21 · 375 阅读 · 0 评论 -
着色方案(状压dp)
题目链接:[SCOI2008]着色方案题意:有n个木块排成一行,从左到右依次编号为1~n。你有k种颜色的油漆,其中第i种颜色的油漆足够涂ci个木块。所有油漆刚好足够涂满所有木块,即c1+c2+…+ck=n。相邻两个木块涂相同色显得很难看,所以你希望统计任意两个相邻木块颜色不同的着色方案。第一行为一个正整数k,第二行包含k个整数c1, c2, … , ck。输出一个整数,即方案总数模1,0...原创 2019-08-09 19:41:29 · 278 阅读 · 0 评论 -
Loppinha, the boy who likes sopinha(dp+记忆化搜索)
题目链接:Loppinha, the boy who likes sopinha题意:给你一个01串,然后连续的x个1需要消耗x*(x+1)/2个能量,现在你可以将一些1变成0,问你最少变几个1使得小号的能量小于给定的能量。思路:首先想到的是贪心,每次都找最长的串然后劈成两半,显然这样不是最优的,比如11111,总能量是3,如果贪心的话就是先变中间的,然后变成11011,然后还需要再变两...原创 2019-08-06 20:07:47 · 167 阅读 · 0 评论 -
Association for the Country of Mububa(dp)
题目链接:Association for the Country of Mububa题意:将这些数划分成n个区间,使得后一个区间里数字的和大于等于前一个区间里数字的和,求最大可以划分多少区间。思路(gxj大佬的):我们知道所有数到最后都会属于某一个区间,某个数结尾的序列最后一个区间值是最大的我们可以这样想,每个数相当于插入到他前一个数形成的序列结尾,然后就变成了一个一个数插入不断取最优值...原创 2019-06-11 19:45:17 · 250 阅读 · 0 评论 -
K-based Numbers(简单dp)
题目链接:1009. K-based Numbers然后还有第三个版本,数据变大,需要用到矩阵快速幂K-based Numbers. Version 3(DP+快速乘+矩阵快速幂)题意:给你n和k,n+k <= 18让你求k进制下n位数连续两位数不为0的数的个数有多少个。思路:这题数据比较小,直接dp就可以,好像是可以数位dp的,但是我交了一发T了,然后想了一下,n == 8 ...原创 2019-05-14 19:03:15 · 177 阅读 · 0 评论 -
Flags(dp)
题目链接:1225. Flags题意:给你三种颜色的旗帜要求蓝色只能放在红色和白色中间相同颜色不能相邻给你n个位置问你不同放法的方案数思路:对于第i个位置来说,如果我们不用蓝色旗帜,那么自然就是i-1这个状态的方案数因为i-1这个状态的结束只能是红色或白色,我们对应着放就可以了如果我们用蓝色旗帜(当然最后一个位置不可能是蓝色,所以,当前位置用蓝色的意思是放在倒数第二个位置,那...原创 2019-05-14 16:50:38 · 115 阅读 · 0 评论 -
Beautiful Array(DP)
题目链接:D. Beautiful Array题意:给你一个n(1 ~ 3e5)个元素(-1e9 ~ 1e9)的数组,然后给你一个x(-100~100),你要选取一个区间,让这个区间内的所有元素乘以x(可以不乘)使得数组的最大子段和最大,输出最大子段和。思路:刚开始看到这题,就想,先求一波最大子段和。然后x <= 0的话那就找最小子段和的区间,让这个区间的数乘xx > 0的...原创 2019-04-24 19:12:23 · 305 阅读 · 0 评论 -
E - Alignment(DP.最长上升子序列,然后摘抄一些最长上升子序列的一些东西)
最长上升子序列 (LIS) 详解+例题模板 (全)#include&lt;iostream&gt;#include&lt;cstdio&gt;#include&lt;cstring&gt;#include&lt;cstdlib&gt;#include&lt;cmath&gt;#include&lt;algori转载 2019-03-12 18:30:08 · 138 阅读 · 0 评论 -
F - Divisibility(01背包)
题目链接POJ - 1745 题目大意:给出N和K,然后给出N个整数(不论正负),问在这N个数中,每两个数之间(即N - 1个位置)添加加号或者减号,然后运算的值对K取余,如果余数等于0输出Divisible,否则输出Not divisible思路:定义dp[i][j]为前i个数可以算得的所有情况,1为可以,0为不可以所以如果dp[N][0]为1那么即可以组成一个数对K取余为0...转载 2019-03-11 20:33:05 · 176 阅读 · 0 评论 -
K-based Numbers. Version 3(DP+快速乘+矩阵快速幂)
Step 1 Problem:题意:给你限制长度为n,必须是k进制,让你求长度为n的正整数且 中间不能有连续的两个零 的个数 取模 MOD。数据范围:2 &lt;= n, k, MOD &lt;= 1e18.Step 2 Involving algorithms:DP 矩阵快速幂 快速乘Step 3 Ideas:最开始想到的求法就是 设置一个二维dp[i][j]。dp[...转载 2019-02-20 15:47:15 · 166 阅读 · 0 评论 -
Max Sum(简单DP)
题目链接:Max SumProblem DescriptionGiven a sequence a[1],a[2],a[3]…a[n], your job is to calculate the max sum of a sub-sequence. For example, given (6,-1,5,4,-7), the max sum in this sequence is 6 + (...原创 2019-02-03 23:37:41 · 120 阅读 · 0 评论