随笔分类 -  DP

摘要:题意:有一颗数,每个点有一个颜色,定义两点之间的距离为两点路径之间不同颜色的数目,问所有路径的距离和是多少? 思路:每个颜色的贡献为路径中有这个颜色的路径数。先假设所有路径都会经过一种颜色,再减去不会经过这个颜色的路径数就是这个颜色的贡献。 看一下这个博客会好理解一些吧:https://blog.c 阅读全文
posted @ 2019-07-03 23:48 维和战艇机 阅读(449) 评论(0) 推荐(0)
摘要:题意:给你一个长度为n的字符串,定义两个字符串的相关度为两个串对应的子串中第一个串字典序大于第二个串的个数。现在给你相关度,和第二个串,问满足条件的第一个串有多少个? 思路:设dp[i][j]为填了前i个字符,后面的字符和s相同,相关度为j的方案数。现在有两种转移: 1:i位置填的字符大于s[i], 阅读全文
posted @ 2019-07-03 00:07 维和战艇机 阅读(243) 评论(0) 推荐(0)
摘要:题意:现在有一个字符矩阵,从左上角出发,每个人交替选择一个字符。如果最后字符a数目大于字符b,那么第一个人获胜,否则b获胜,否则平均。现在双方都不放水,问最后结果是什么? 思路:这题需要注意,选择的字符串不是一条单纯的路径,而是包括这个字符串的所有路径的并。 比如: abc bac ccc ab字符 阅读全文
posted @ 2019-06-30 17:00 维和战艇机 阅读(273) 评论(0) 推荐(0)
摘要:题意及思路:https://blog.csdn.net/mmk27_word/article/details/93999633 第一次见这种DP,有点像退背包的思想,如果发现有可能因为字母相同和前面算重时,把这种情况减去。 代码: 阅读全文
posted @ 2019-06-28 23:39 维和战艇机 阅读(295) 评论(0) 推荐(0)
摘要:题意及思路:https://www.cnblogs.com/Als123/p/11061147.html 代码: 阅读全文
posted @ 2019-06-27 19:58 维和战艇机 阅读(294) 评论(0) 推荐(0)
摘要:题意:给你一个数n和t,问字母出现次数不超过t,第n小的16进制数是多少。 思路:容易联想到数位DP, 然而并不是。。。我们需要知道有多少位,在知道有多少位之后,用试填法找出答案。我们设dp[i][j]为考虑前i种字母,已经占了j个位置的方案数。那么dp[i][j] += dp[i - 1][j - 阅读全文
posted @ 2019-06-26 23:08 维和战艇机 阅读(263) 评论(0) 推荐(0)
摘要:题意:现在有n张卡片(n <= 16), 每一轮你可以执行两种操作中的一种。1:获得一张红色令牌和一张蓝色令牌。2:购买一张卡片(如果可以买的话),购买的时候蓝色卡片可以充当蓝色令牌,红色同理,但是购买后只消耗令牌,不消耗卡片。问最少多少轮可以购买全部卡片。 思路1:状压DP。我们发现卡片可以减少令 阅读全文
posted @ 2019-06-26 11:07 维和战艇机 阅读(302) 评论(0) 推荐(0)
摘要:题意及思路:http://ydc.blog.uoj.ac/blog/12 在求出树的直径的中心后,以它为根,对于除根以外的所有子树,求出子树中的最大深度,以及多个点的最大深度的lca,因为每个点的最长路径一定经过根,所以找到最大深度的子树,然后在这个点和最大深度的lca上树上差分一下就好了。注意,此 阅读全文
posted @ 2019-06-10 20:56 维和战艇机 阅读(523) 评论(0) 推荐(0)
摘要:题意及思路:https://www.cnblogs.com/chaoswr/p/9460378.html 代码: 阅读全文
posted @ 2019-06-10 09:38 维和战艇机 阅读(153) 评论(0) 推荐(0)
摘要:题意:你要在纸上画一个长度为n * m的括号序列,第i个位置画左括号的花费是a[i % n], 画右括号的花费是b[i % n],问画完这个括号序列的最小花费。n <= 20, m <= 1e7 思路:如果不管n和m的限制,这个题很好做,设dp[i][j]是到i位置,平衡因子是j的花费,dp[i][ 阅读全文
posted @ 2019-06-08 11:43 维和战艇机 阅读(317) 评论(0) 推荐(0)
摘要:题意及思路:https://www.cnblogs.com/zjp-shadow/p/9562888.html 这题由于性质特殊,可以用01BFS来进行DP的转移。 代码: 但是实际上,遇到有后效性的DP方程时,如果是一个DAG,一般用spfa来进行DP的状态转移,因为spfa是迭代的思想,如果所有 阅读全文
posted @ 2019-06-03 21:57 维和战艇机 阅读(246) 评论(0) 推荐(0)
摘要:题意及思路:https://blog.csdn.net/bossup/article/details/37076965 代码: 阅读全文
posted @ 2019-06-03 11:05 维和战艇机 阅读(201) 评论(0) 推荐(0)
摘要:题意及思路:https://blog.csdn.net/yzyyylx/article/details/90145400 这题主要巧妙在分析了最短路算法的性质,得出大小小于等于3的连通块一定不会被再次访问的结论。 代码: 阅读全文
posted @ 2019-05-27 20:39 维和战艇机 阅读(301) 评论(0) 推荐(0)
摘要:题意:给你一个长度为n的序列,有q次询问,每次询问给出两个位置x和y(x < y),问是否可从x到达y?可达的定义是:如果存在一个序列(假设长度为k),其中p1 = x, pk = y,并且这个序列中a[pi] & a[p(i + 1)] != 0。 思路:设dp[i][j]是从i位置及其之后的位置 阅读全文
posted @ 2019-05-27 20:29 维和战艇机 阅读(637) 评论(0) 推荐(0)
摘要:题意:给你一颗树,有q次询问,每次询问给你若干个点,这些点可以最多分出m组,每组要满足两个条件:1:每组至少一个点,2:组内的点不能是组内其它点的祖先,问这样的分组能有多少个? 思路:https://blog.csdn.net/BUAA_Alchemist/article/details/86765 阅读全文
posted @ 2019-05-24 14:49 维和战艇机 阅读(381) 评论(0) 推荐(0)
摘要:题意:给你一张图,问最少保留多少条边,使得这张图是边双联通分量。 思路:如果一个点集中的点已经是边双联通分量,那么从这个点集中的点x出发,经过若干个不是点集中的点,回到点集中的点y(x可能等于y),那么这条路径上的点和原来的点就构成了一个新的边双联通分量。 设dp[i]是状态i中的点构成边双联通分量 阅读全文
posted @ 2019-05-23 16:18 维和战艇机 阅读(379) 评论(0) 推荐(0)
摘要:题意:给你一个长度为n的字符串,有q次询问,每次询问会给字符串x的末尾添加一个字符y,或者删除字符串x末尾的字符,询问过后,要判断长度为n的字符串中是否有3个不重合的子序列,是这3个字符串。 思路:设dp[i][j][j]为3个字符串的长度分别为i, j, k时,匹配的最靠前的位置。那么就枚举是通过 阅读全文
posted @ 2019-05-21 21:40 维和战艇机 阅读(267) 评论(0) 推荐(0)
摘要:题意:给你一个数组,你可以选择数组中的一个数,把它插入数组的其它位置,问∑ i * a[i]的最大值为多少? 思路:设dp[i]表示把第i个数向左边插入可以获得的最大增量,我们假设向左边插入,设插入的位置是j,当前位置是i,那么变化为sum[i - 1] - sum[j - 1] - (i - j) 阅读全文
posted @ 2019-05-17 14:54 维和战艇机 阅读(303) 评论(0) 推荐(0)
摘要:题意:在一颗森林有n颗数,编号从1到n,第i棵树高度是a[i]。有一个伐木工想要砍伐这片森林,它的电锯每次可以将树的高度减少1,然后就必须要充电,充电的代价是他已经砍倒的树种编号最大的那颗树的代价(b[i]),问他砍完这片森林的最小代价。(a严格单增,b严格单减,a[1] = 1, b[n] = 0 阅读全文
posted @ 2019-05-13 15:06 维和战艇机 阅读(284) 评论(0) 推荐(0)
摘要:题意:给你一个字符串s,以及两个字符串s1,s2.s中有些位置是*,意思是可以随便填字母,s的子串中如果出现一次s1,就加一分,如果出现一次s2,就减一分。问这个字符串s最多可以得多少分? 思路: 设dp[i][j][k]为到s串的i位置,s1的匹配长度是i,s2的匹配长度是j的情况下可以获得的最多 阅读全文
posted @ 2019-05-11 21:33 维和战艇机 阅读(429) 评论(0) 推荐(0)