随笔分类 - DP及其优化
摘要:建议到 "UOJ" 上去交 题解 一眼$DP$,先把转移方程写出来 设$dp[i]$为从点$i$出发到点$1$的最小费用,那么存在转移 $$f[i]=min\{f[j]+(d[i] d[j])p[i]\}+q[i]=min\{f[j] d[j]p[i]\}+d[i] p[i]+q[i]$$ 这个式子
阅读全文
摘要:"原题链接" 写到一半发现写不下去了。。。 所以 orz xyz32768 ,您去看 "这篇题解" 吧,思路很清晰,我之前写的胡言乱语与之差距不啻天渊 cpp include include include include include include include include includ
阅读全文
摘要:"原题戳这里" 绝对是一道好题 需要注意到两个东西 1.符合条件的数可以拆成一堆$11...11$相加的形式,比如$1145=1111+11+11+11+1$ 2.$1,11,111,1111,...$模$p$会出现循环,循环节长度不超过$p$ 还有就是$11...11$最多为$9$个,然后就可以$
阅读全文
摘要:"原题链接" 首先有一个$O(nk)$的很显然的$dp$,把荷斯坦牛看成$1$,把更赛牛看成$ 1$,这样就可以很方便地通过前缀和来判断某一段中谁有优势了 考虑怎么优化,观察转移: $$f[i]=min\{f[j]+[sum[i] sum[j]\leqslant 0]\},1\leqslant i
阅读全文
摘要:"原题链接" orz xzz巨佬 首先发现一个结论:两个相邻的$c$值如果不相同的话,就可以固定某个位置的值了 这启示我们把连续且相等的$c$给单独拿出来看,也就是对于一些$c_i=c_{i+1}=...=c_j=v$,能不能从中得出一些东西 这一段代表的区间总长为$j i+k$,所有的数都大于等于
阅读全文
摘要:"原题戳这里" 首先可以确定的是最优策略一定是从大到小开始,遇到亮的就关掉,因此我们可以$O(nlogn)$的预处理出初始局面需要的最小操作次数$tot$。 然后容(hen)易(nan)发现即使加上了随机,那$tot$个也一定要被操作,也就是说操作这$tot$个之外的都是没用的。 于是就可以$dp$
阅读全文
摘要:"原题链接" $EDU$出一道长链剖分优化$dp$裸题? 简化版题意 问你每个点的子树中与它距离为多少的点的数量最多,如果有多解,最小化距离 思路 方法1 . 用$dsu\ on\ tree$做到$O(nlogn)$ 方法2 . 考虑$dp$,也就是设$f[u][d]$表示以$u$为根的子树中有多少
阅读全文
摘要:易知状态不会太多($3329$个),直接搜一下,按照能不能连在后面建边,跑一遍dp即可 cpp include using namespace std; struct S { int cnt; vector s; }a[5000]; int n, m = 10, L = 32; vector G[5
阅读全文
摘要:思路是这样的 插头dp 打表 OEIS查表 通项公式 矩阵快速幂优化线性递推 OEIS竟然有这个东西的生成函数啊 答案为 这是最终代码
阅读全文
摘要:"原题链接" 题目大意 $n\times n$的带权方阵,选一个权值最大的连通块 Solution 一眼连通性DP,然后就没了 转移很好想的啦,简单讨论一下就行了 有一个坑点,就是不能一个格子都不选,特判一下 注释还算详细QwQ
阅读全文

浙公网安备 33010602011771号