随笔分类 - 动态规划
摘要:期望背包DP 复杂度$O(n m)$ 前两天模拟考考了这道题 考试时想到了如何设计状态,可惜转移方程写错了。 我的想法:设$dp[i][j]$表示前i个人借到j元时的期望支出,$pp[i][j]$表示前i个人借到j元的概率,$ans=\sum_{i=L}^{sum}pp[n][i] (M dp[n]
阅读全文
摘要:费用提前的DP 由于满分做法是单调栈优化DP,相对冷门,且复杂度依旧成谜,所以我选择咕咕咕 谈一谈60分的$O(n^2)$做法 费用提前,指的往往不是预先计算费用来保持DP的最优子结构性质。相反,它 破坏了最优子结构的性质 ,除了最后我们需要的答案,其它DP出的答案都是错的。比如此题,我们 提前考虑
阅读全文
摘要:Algorithm:树状数组优化DP 性质:相同数对少,实际状态少 朴素dp:dp[i][j]=max(dp[k][l]+2)——如果a[i]==a[j] 由于每个数字最多只出现4次,所以数对数量不超过C(4,2)/4 1e5 f[k]表示dp[a[k].first][a[k].second],用一
阅读全文
摘要:状压DP 考虑删完边之后的图,一定是从1到n的一条链,链旁边挂上若干个联通块,要求这张图的边权和最大。 f(S, i)表示链的尾部是i,目前加入了S集合里的点,最大的边权和。预处理block表示集合s内部边权之和,g(i, j)表示(i, j)边的边权。 有两种转移, 一种是新处理一个点, 一种是将
阅读全文
摘要:前言:刚学OI时太菜了,没有真正搞懂这些问题,现在希望加深对这些经典问题的理解。 最长上升子序列: 设dp[i]表示长度为i的上升子序列的最小末位数字。显然,长度一定时末尾数字越小越好。然后不断更新最小数字,显然若x dp[i 1&&x using namespace std; define go(
阅读全文
摘要:Description 有n片荷叶在池塘上。因为如此这般,有一只年轻的青蛙要在荷叶上跳。它是这样跳的:假如它在第i 号荷叶上,那么它等概率地跳到1 到i 号的荷叶中的一个,跳到1 号荷叶结束。求这只青蛙期望跳多少次结束。 想法: 设f[i]表示第i个荷叶跳到第1个荷叶的期望步数 f[i]=(f[1]
阅读全文
摘要:```c void dfs(int u,int fa){ f[u]=f2[u]=g[u]=g2[u]=0; for(int i=head[u];i+1;i=e[i].nxt){ int v=e[i].v,w=e[i].w; if(v==fa) continue; dfs(v,u); if(f[v]+
阅读全文
摘要:单调队列DP/差分约束 差分约束会TLE "讲解在这里"
阅读全文
摘要:此题我是做过的,挑战上的一道题 刚开始想:不就是隔板法吗?但是此题不同顺序算同一种方案,隔板法显然无法解决此类问题,只能用计数类DP 但是由于数据水,暴搜也可以过 我们根据是否包含1划分 ,f[i][j]=f[i 1][j 1]+f[i j][j]; 这体现了“ 围绕一个基准点把一个大问题划分为两个
阅读全文
摘要:DP+DFS 复杂度 O(玄学) 一道奇怪的题目,考场不一定能想得出来 首先证明1的必要性,显然,没有1无法表示出1,因此1是必要的 有了1之后,就有了一个枚举范围,对于一种邮票,它的面值要比前一个大。 设前i 1种邮票能表示出来的最大范围为up,那么一定不能表示出up+1,所以第i种邮票的最大面值
阅读全文
摘要:自己理解不了,而且书上的内容似乎讲的不太清楚?是我太菜了。 看了两篇博客,都写的非常好。 "贴个链接"
阅读全文
浙公网安备 33010602011771号