随笔分类 -  动态规划

DP题目的一些常见方法
摘要:称前 \(n-m\) 个点为黑点,后面 \(m\) 个点为白点。题意就是不能有任意两个点,满足他们之间的每条路径上都有白点(除这两个端点)。 发现如果有些白点与黑点之前不连边,那么这些白点之间必然是一些团。方案数就是第二类斯特林数,这些白点我们先不管。 记 \(g_i\) 表示 \(i\) 个点的连 阅读全文
posted @ 2020-09-06 11:54 With_penguin 阅读(159) 评论(0) 推荐(1)
摘要:之前没做过无标号有根树有关的题目,考场上写个错的DP过了 $30pts$... 首先根据题目的条件,我们在脑海中大概能想象出这棵树的样子。假设初始状态只有两个相连的点,其中一个是根,另一个是叶子。定义一次生长为:在一个叶子下面接上三个新点。发现符合条件的树只能由初始状态生长若干次得到。题目就转化为了 阅读全文
posted @ 2020-08-24 00:13 With_penguin 阅读(160) 评论(0) 推荐(0)
摘要:一道不是很难的区间DP题,我竟然没能想到。 由于这道题的空间限制,我们先离散化。 设 \(f_{l,r}\) 表示区间 \([l,r]\) 内最多可以选择多少线段。若: 没有以 \(l\) 为左端点的线段,则 \(f_{l,r}=f_{l+1,r}\); 遍历这些线段并设当前线段的右端点为 \(r' 阅读全文
posted @ 2020-08-06 23:56 With_penguin 阅读(395) 评论(0) 推荐(1)
摘要:通常套路是设$f[x][]$表示$x$节点怎么怎么样(编不下去了)。 例题: luogu P3047 [USACO12FEB]Nearby Cows G 题解 计蒜客 T3225 Darko 的生成树 题解 阅读全文
posted @ 2020-06-04 20:26 With_penguin 阅读(138) 评论(0) 推荐(0)
摘要:这道题直接设状态不太好做。 我们先设$g[x][i]$表示$x$子树内跟它相距不超过$i$的点的点权之和。这个一遍$dfs$就可以搞定。 现在的问题是怎么计算非$x$子树内的贡献(我当时想了好久楞是没想出来呜呜呜)。其实很简单,有了$g$数组的辅助,我们现在可以直接设$f[x][i]$表示与$x$相 阅读全文
posted @ 2020-06-04 20:22 With_penguin 阅读(122) 评论(0) 推荐(0)
摘要:代码: #include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #include<stack> #include<queue> using namespace std; const int N=500009; 阅读全文
posted @ 2020-05-09 00:12 With_penguin 阅读(111) 评论(0) 推荐(0)
摘要:例题 luogu P4342 [IOI1998]Polygon 题解 CF1399F Yet Another Segments Subset 题解 阅读全文
posted @ 2020-04-22 16:07 With_penguin 阅读(89) 评论(0) 推荐(0)
摘要:这是一道区间DP(几乎是裸题)。 看到环首先断环为链,然后发现只有两个数相乘负负得正的情况不好处理,所以在此记录$f[i][j]$表示区间$i j$的最大值,$g[i][j]$表示区间$i j$的最小值,由于分正负号讨论非常的麻烦,而答案只可能在$(f[i][k 1] f[k][j],f[i][k 阅读全文
posted @ 2020-04-22 16:06 With_penguin 阅读(115) 评论(0) 推荐(0)
摘要:换根DP get!之前Hygebra巨佬跟我讲过一遍,当时听懂了可惜后来忘了。。。昨天问了Binary_Search_Tree一道动态点分治的弱化版被换根DP吊锤了。。。 这里引用一下 "树形dp换根" 里对换根DP的总结,个人认为非常清楚: _以下为引用_ 换根解决的是“不定根”的树形dp问题。该 阅读全文
posted @ 2020-04-20 08:17 With_penguin 阅读(184) 评论(0) 推荐(0)
摘要:这题用换根DP非常好处理。 先用$1$为根树形DP出第一个把$1$号点变成黑点所得到的贡献。然后发现若$x$的答案为$a[x]$且$v$为$x$的子节点,那么$a[v]=a[x]+n 2 \times siz[v]$(换根过程)。 然后对每个点的答案去一个最大值就好了。 代码: 阅读全文
posted @ 2020-04-20 08:16 With_penguin 阅读(81) 评论(0) 推荐(0)
摘要:计数DP可能会涉及到一些组合数的知识,也是考试中经常考察的部分。 FZOJ 4109 青青草原的表彰大会 题解 FZOJ 4344 连通性 题解 阅读全文
posted @ 2020-04-15 19:38 With_penguin 阅读(126) 评论(0) 推荐(0)
摘要:由于博主对DP的感知能力过于低下,考试的时候竟然没发现这是DP。。。 发现每个数一定是它前面一个数的倍数,所以这个数列一定是有序的,也不难发现这个数列最多有$O(logn)$个不同的数,所以设$f[i][j]$表示有$i$个不同的数,最后一个数是$j$的方案数。 所以最后有$d$个互不相同的数的个数 阅读全文
posted @ 2020-04-15 19:37 With_penguin 阅读(162) 评论(0) 推荐(0)
摘要:状压DP可以说非常的暴力,一般在看到数值较小时可以考虑。 1. FZOJ 4108 世界树的考验 "题解" 阅读全文
posted @ 2020-04-15 15:51 With_penguin 阅读(126) 评论(0) 推荐(0)
摘要:这题的转换非常的巧妙。 众所周知,树上一条路径点权异或有非常好的性质,可惜这道题是边权啊,这就需要一个转化: 设每个点的点权为与它相连的所有边的边权的异或和。那么使得每个点的点权为$0$就是题目要求达到的状态。 证明:考虑度数为$1$的点,显然与他们相连的边为$0$,然后把他们删掉,又会有很多度数为 阅读全文
posted @ 2020-04-15 15:49 With_penguin 阅读(153) 评论(0) 推荐(0)
摘要:这题是在图上跑DP并借助了一些最短路的信息。 $30pts:$ 最短路计数,略 $70pts:$ 考虑没有$0$边时,设$dis[i]$表示从$1$到$i$的最短距离,$f[i][j]$表示$1$到第$i$个点距离为$dis[i]+j$的方案数,由于没有$0$边,所以发现把$dis[i]$排序以后$ 阅读全文
posted @ 2020-04-15 07:23 With_penguin 阅读(105) 评论(0) 推荐(0)