![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
DP
HUGOkungggg
Never go back, where you begun.
展开
-
第27次CCF CSP认证【何以包邮?】
题解原创 2022-11-22 21:49:51 · 512 阅读 · 0 评论 -
区间DP
Cake题意:给定一个多边形,问能否通过最少的花费将多边形切割成一些三角形,所有的线段的交点只能在端点。思路:首先判断是不是凸多边形。不是则直接输出I can't cut. 如果是,那可以观察到如果考虑从i到j的最少切割,至少是从区间i到k,和区间k到j转移而来,毕竟不一定从i到j切一下得到的就是三角形。这个转移就和区间dp类似了。但是这个边界的定义就有点搞人了。有两种写法#in...原创 2020-04-10 23:16:15 · 102 阅读 · 0 评论 -
P1941 飞扬的小鸟
题目链接定义dp[i][j]表示走到坐标(i,j)时的最小点按次数。考虑递推关系,能走到坐标(i,j),一种情况是从前一个位置下降得到,另一种情况是通过k次点按得到即上升得到。细节是如果上升的高度超过了m,那么就是停在了最高处,不能再上升也不会结束游戏,这里要比较一下dp[i][m]与所有超过最大高度的状态。即上升的转移是一个完全背包,下降是01背包。#include <b...原创 2020-04-06 23:08:17 · 202 阅读 · 0 评论 -
P1273 有线电视网
题目链接题解:其实dp也挺好想的,是一颗树嘛,那就是树形dp咯,那肯定有一维是节点的,另一维就是定义在这个节点下选多少个用户的最大收益。其实本质又转化为了有依赖的背包问题,节点与子节点之间的转移就是和有依赖的背包问题一样。#include <bits/stdc++.h>using namespace std;#define ll long long#define in...原创 2020-04-03 00:00:52 · 137 阅读 · 0 评论 -
P1040
加分二叉树比较巧妙。其实还是自己的思维不行。我们不需要管这棵树是什么样子的,因为中序序列是1到n从小到大,且算分的条件表明选择不同的点为根就会有不同的结果,则我们要考虑哪个点作为根。定义dp[i][j]为i点到 j 点之间的点形成树的时候的最大值,并且用root[i][j]记录转移过程中选择的哪个点作为最优。#include <bits/stdc++.h>using na...原创 2020-03-31 23:41:07 · 311 阅读 · 0 评论 -
CCF
暴力没法拿满分,也想不到有什么图论算法或树算法是可以解决这个题的,大概这时候就可以想想怎么dp了,又是树型结构,那应该考虑树形dp了。要算两两之间的距离的和,这种看上去好像是只能n方解决的,应该要注意到可能是分解成每一个部分算贡献(不然咋做呢)。考虑怎么划分集合定义dp,对于树形dp首先第一维应该是节点,第二维考虑题目的子问题,即选了多少个重要节点。dp[i][j]:在i节点下选了j个重要...原创 2020-03-25 20:27:55 · 570 阅读 · 0 评论 -
树的重心(模板)
Balancing Act定义dp[i]:以i为根时最大的子树的值。对于遍历到的每个i,比较所有的子树的大小之后,还要注意比较i这个子树以外的大小(n-num[rt])。(图为引用自一位大佬的博客)//#include <bits/stdc++.h>#include <algorithm>#include <iostream>#inclu...原创 2020-03-25 16:56:02 · 143 阅读 · 0 评论 -
2020牛客寒假算法基础集训营5
碎碎念看了题解,想法和我差不多。可是没注意RJ之后都会AC这个,一直推不对式子。定义为第i声是RJ且由前面第i-x转移过来,为第i声为AC,由前i-1声转移过来。(如果第i声是AC那么前面的i-1是RJ还是AC都可以),(如果第i声是RJ那么肯定由前面的一发AC转移过来)#include <bits/stdc++.h>#include <algorit...原创 2020-02-13 19:56:13 · 81 阅读 · 0 评论 -
数位DP题目
Beautiful numbers解:完美数:一个数能被自己每个数位上的数整除(0不算)。题目问区间[L,R]里有多少完美数。数位dp,定义dp[i][j][k]为从最高位到i+1位组成的数为j,数位的最小公倍数为k的方案数。每次都记录自己当前组成的数和数位的最小公倍数,组成的数可以取模2520(1乘到10的结果),对答案不影响。#include <bits/stdc++.h&...原创 2020-02-10 19:35:42 · 292 阅读 · 0 评论 -
寒假之CF篇
Obtain The String题意:给出两个字符串s,t。给定一个操作是每次取出一个s的子序列加在字符串z后面(z开始时为空),使得最后z等于t。问最少的操作数。定义一个数组表示在s中下标在i~n里最小的下标pos,。#include <bits/stdc++.h>#include <algorithm>#include <cstdio>...原创 2020-02-07 16:03:53 · 138 阅读 · 0 评论