随笔分类 - DP
摘要:分析 dp[x][i]表示以x为根的子树有i个黑点的方案数 我们发现每次转移要枚举这个点的子树大小和儿子的子树大小 看似复杂度O(n^3) 但是我们可以把循环转化为枚举x子树内的点再枚举它儿子的子树内的点 发现对于一个点它作为儿子子树的点枚举时最多只会和一个点同时枚举到一次 所以总共n^2组点 所以
阅读全文
摘要:分析 这是真正的云南oi/px 我们需要考虑保留一段不降子序列 剩余的自由往前往后移动 所以dp一下即可 代码
阅读全文
摘要:分析 g[x][i]表示x点向上i条边的所有关键点都被覆盖的代价 f[x][i]表示x点向下i条边有关键点未被覆盖的代价 转移即可 代码
阅读全文
摘要:分析 我们按照w排序 之后2是左括号1是右括号 3既可以是左括号又可以是右括号 然后直接dp即可 我们发现合法的k不会超过sqrt 所以复杂度是对的 对于w相等的情况我们按照种类231排序 代码
阅读全文
摘要:分析 从1~n以此放数 每个数i会产生0~i-1的贡献 dp[i][j]表示前i个数产生j的贡献 前缀和优化一下即可 代码
阅读全文
摘要:分析 我们知道对于一个置换它变回自己需要的次数树$LCM(g_1,g_2..,g_n)$ 有$LCM = \prod p_i^{k_i}$ 因为循环大小为1没有贡献 所以对于该等式的限制即为 $\sum p_i^{k_i} \leq n$ 用$dp_i$表示大小为$i$时的方案数即可 代码
阅读全文
摘要:题目大意 给你一个有向图和一个路径 让你在给定路径中选出尽量少的点使得新路径的最短路长度和原路径相等 给定路径相邻两点间距离为1 分析 先floyd求出两点间最短路 之后每次对于点i找到所有跟它的最短路距离=在序列上建个距离的点j 将dp[i]转移到dp[j]即可 代码
阅读全文
摘要:分析 我们不难发现对于偶数的情况只要相邻两个数不相等即可 而对于奇数的情况只要中间恰好隔一个数的两个数不相等即可 于是我们又dp[i][0/1]表示考虑到第i位,这一位和它后面离它最近的一个确定的数是否相等 每次从i-1转移即可 注意对于奇数的情况最终答案要n-1和n的dp值相乘以保证合法 代码
阅读全文
摘要:分析 不难想到dp[i][j]表示前i个数分了j组的最大值 我们发现这个dp状态有决策单调性 g[i][j]表示对于第i个数它的第j位最近出现的位置 每次一定从这些点转移 预处理即可 似乎还可以做到1e5 https://www.cnblogs.com/hanyuweining/p/10321914
阅读全文

浙公网安备 33010602011771号