随笔分类 -  dp

摘要:"题目链接" $f[u]$ 表示从 $u$ 走到 $n$ 的生成函数。 $$ f[u] = \frac{\sum_{v\in e_u} f[v] x}{1 L_ix} $$ 显然最后 $f[1]$ 可以写成 $\frac {A}{\prod 1 L_ix}$ 的形式。 于是就是一个线性递推,最开始的 阅读全文
posted @ 2020-04-13 21:27 jerome_wei 阅读(374) 评论(0) 推荐(0)
摘要:"Link" 显然可以将条件拆成相邻边之间的方向要相同/不同。考虑二分答案 $K$ 。 我们硬点当前节点 $\text{x}$ 到父亲 $\text{fa}$ 的边的方向是 $\text{x}\to \text{fa}$。设 $f[x]$ 为最小的合法的填在 $x$ 上的数,当然,如果边反向的话最大 阅读全文
posted @ 2020-03-27 22:41 jerome_wei 阅读(491) 评论(0) 推荐(0)
摘要:考虑限制一定是对于前缀和后缀的,并且显然相交的前后缀可以不考虑。然后还可以发现只用考虑最长的那一段的条件,即 $\lfloor\frac {n 1}{2}\rfloor$ 和 $\lfloor\frac {n 1}{2}\rfloor + 1$ 的长度。 可以将原序列分成两个部分。 如下: $$ { 阅读全文
posted @ 2019-12-28 23:24 jerome_wei 阅读(419) 评论(0) 推荐(0)
摘要:简要题意 求一个图邻接矩阵的行列式,保证边双大小 $D$ 小于等于40。 我们先考虑求一个带权方案数:$行列式 ( 1)^{点数}$,其组合意义是分成若干个环,带 $( 1)^{环个数}$ 的权 先缩点,记 $f[i][0/1]$ 表示 $i$ 子树内,向父亲连的桥边是否选中,带权的方案数。 向下连 阅读全文
posted @ 2019-12-04 20:24 jerome_wei 阅读(689) 评论(0) 推荐(0)
摘要:简要题意:给一个序列,对每个 $i$ 求 $k$ 进制意义下不进位加法和为 $i$ 的方案数。 显然可以暴力多维FFT。弱化一点的版本是异或,即$k=2$。(参考 "UNR 2黎明前的巧克力" ) 考虑怎么优化。考虑 $1+x^a_i$ 对应的多项式,高维FFT后可以发现每一位上的值形如 $w_k^ 阅读全文
posted @ 2019-11-12 21:22 jerome_wei 阅读(330) 评论(0) 推荐(0)
摘要:考虑朴素dp。 $$ f_{i,j} = f_{i 1,j} + f_{i 1,j 1} (j+a_i) $$ 稍微转换一下下标: $$ f_{i,\Delta} = f_{i 1,\Delta 1} + (a_i+i \Delta)f_{i 1,\Delta} $$ 拆组合意义: 一个位置上乘了 阅读全文
posted @ 2019-11-05 19:56 jerome_wei 阅读(1084) 评论(0) 推荐(0)
摘要:考虑枚举行列的 $n+m$ 元组,表示该行 / 列的最小值。 这样的方案数可以容斥轻松算出。 发现这样本质不同的限制有 $2(n+m)$ 种: 当前行 / 列 $ t \to \ge t+1$ 当前行 / 列 $\ge t$ 每个位置上的限制是行列上的较大值,贡献是较小值。 $f[cur][i][j 阅读全文
posted @ 2019-10-06 23:34 jerome_wei 阅读(534) 评论(0) 推荐(0)
摘要:Task 0 判断有多少条相同边即可。 复杂度$O(N)$ cpp namespace Subtask1{ pair e1[N],e2[N]; void Main(int n,int y){ for(int i=1,u,v;i (min(u,v), max(u,v)); } for(int i=1, 阅读全文
posted @ 2019-09-27 15:58 jerome_wei 阅读(213) 评论(0) 推荐(0)
摘要:"link" 简要题意: 给一颗$n$个点的二叉树, ,每个点有$a[i]$个果实,有$m$次操作,每次在$u\to v$(保证$u$是$v$的祖先)中取不超过$c$个果实,每取一个贡献$w$的收益 首先可以暴力建边然后费用流。考虑优化,有一种显然的贪心策略:按照$w$从大到小依次尽量选最多,判断可 阅读全文
posted @ 2019-08-16 22:01 jerome_wei 阅读(394) 评论(0) 推荐(0)
摘要:题目大意: 在UOJ管理员群里一共有$N$个管理员,为了容纳这些管理员,vfk准备了$N+1$个鸽笼。 为了节省空间,vfk把这些鸽笼堆了起来,共有$n$列,第i列放了$a_i$个鸽笼,满足 $\sum a_i=N+1$。 每当UR结束,管理员们就会按照编号从小到大的顺序回到鸽笼里,每个管理员回来的 阅读全文
posted @ 2019-07-01 19:24 jerome_wei 阅读(404) 评论(0) 推荐(0)
摘要:题目描述 短发pinga野郞有一棵 $N$ 个节点的有根树,其中 $1$ 号节点为根。 现在她想在这棵树上进行一种奇妙的游戏。游戏开始时,她会在其中一些节点(至少两个)上摆放一个棋子。在游戏的每个回合中,她会将所有棋子移动到父亲节点上(如棋子位于根节点则不移动)。移动完所有棋子后,如果有两个棋子位于 阅读全文
posted @ 2019-06-29 00:19 jerome_wei 阅读(260) 评论(0) 推荐(0)
摘要:35 pts: 设$f[i][j]$表示在$i$节点,当前重链顶端到当前点距离为$j$的最优方案。 复杂度是$O(n^2)$ 100 pts: 自己的理解可能跟题解有点偏差。 考虑dp的一个$f[i][j]$ 一定会转移到0之后才对非$j 1$的位置造成贡献。 我们转换一下,即每个位置所在的重链一定 阅读全文
posted @ 2019-06-19 19:31 jerome_wei 阅读(320) 评论(0) 推荐(0)
摘要:"题目链接" 考虑我们现在只会外向树的dp,现在想办法如何处理反向的边。 考虑容斥,计算至少有$i$条边不合法的情况,容斥系数是$( 1)^i$ 这个容斥可以用dp来做,这题就完了。 代码 c++ include using namespace std; typedef long long ll; 阅读全文
posted @ 2019-06-18 22:58 jerome_wei 阅读(282) 评论(0) 推荐(0)
摘要:题目大意: 给一个串s,求有多少个串t使得存在t....t的一个长度$|s|$的子串字典序小于s 首先转换成全部都大于等于s。 考虑在kmp自动机上跑t这个串,注意这个自动机的有些路是不能走的。 首先考虑当前已经有无数个t在前面,现在再加入一个t串,显然,如果起始节点是$u$,新加入的一个t走完与加 阅读全文
posted @ 2019-06-18 21:25 jerome_wei 阅读(523) 评论(0) 推荐(0)
摘要:首先考虑dp。 不难发现我们大概是对于每一个高度不能有连续的一段长度,并且在下面都安全的时候才计入限制。 $f[i][j]$表示长度为i的泳池从高度j开始(i,j)的矩形默认安全,满足最大矩形小于k的概率. 转移相当于做一个类似背包的东西。 然后发现$j 0$的时候$i\le 1000$(否则dp值 阅读全文
posted @ 2019-06-01 23:33 jerome_wei 阅读(293) 评论(0) 推荐(0)