随笔分类 - 动态规划
动态规划
摘要:https://gmoj.net/senior/ main/show/100018 很巧妙的递推题。 设$cnt[i]$表示后缀$i$有多个前缀可以变成空。 若能求出最小的$j$,满足$s[i..j]$会变成空,那么$cnt[i]=cnt[j]+1$ 同理,可以设出状态$f[i][c]$表示要$s[
阅读全文
摘要:https://loj.ac/problem/2511 不知道很多轮后就知道了是因为可能的数对在不断减少。 考虑设$f[z][x][y]$表示$z$轮后,两个数分别为$x,y$是否能猜出来。 当$z=1$时,$f=可能的数对(u,v)只有一个$。 当$z 1$时 转移1:$f[z][x][y]=f[
阅读全文
摘要:https://loj.ac/problem/2496 这题给我感觉才是day1 最简单的题,一点都不毒瘤。 先考虑保留一个生成树,对于非树边,我们可以容斥,选其中$i$条边,使得这$i$条边一定不合法,也就是这$i$条边对应的点一定选,容斥系数是$( 1)^i$ 暴力就容斥完之后再做个树形dp,时
阅读全文
摘要:题目描述: PinkRabbit 是一位人赢。 福州市可以抽象成一个n个点m条边的,不包含重边与自环的无向图,PinkRabbit 住在1号 点,而他的妹子住在2号点。 某一天,PinkKitten 施放了一个大魔法,让这个无向图上所有的边都变成了单向边。现在 PinkRabbit 关心的是他是否能
阅读全文
摘要:https://gmoj.net/senior/ main/show/6545 考场上想到了min max容斥,结果后面的dp用了复杂度劣的,多了个log,就只有75p了。 求所有lcm的乘积,转换为枚举一个质数$p$,求p出现的指数$mod ~ mo 1$ 那么$=\sum_{一种划分S} S含有
阅读全文
摘要:https://loj.ac/problem/2981 这真TM是个防AK题。 考虑先套上burnside,枚举置换$i$,发现问题变成$gcd(i,n)$长的环,染m种颜色,连续m个不会出现m个颜色的方案数,记$f(d)$表示长为d的环的方案数,则$Ans=\sum_{d|n}f(d) \
阅读全文
摘要:https://loj.ac/problem/2977 暴力:状态记录当前选了哪些颜色的点,用斯坦纳树去转移,应该能过个40分。 对于第2问,考虑先二分答案mid,把mid的取值设为1,相当于在联通块点数最少的同时,权值和最小。 若最小权值和=mid$,调整二分区间即可。 对于这种恰好选k个不同的颜
阅读全文
摘要:https://gmoj.net/senior/ main/show/6541 $nfa[x]$的边权=$x子树内的段数$,注意这题是一个环。 设$f[i][j]$表示$i$子树内,有$j$段, 我们发现如果段与段之间的顺序没有定,是不好做的,所以定段与段的顺序为一个圆排列。 又为了更加确定,我
阅读全文
摘要:https://loj.ac/problem/2290 先看$O(n!)$的怎么做? 枚举一个排列(完美匹配),计算这个匹配的边一定出现(其它边随意)的概率。 若组0、1、2有恰好一条边在这个匹配,则概率$ 1/2$ 若组1有恰好两条边,则概率$ 1/2$ 若组2有恰好两条边,则概率$ 0$ 考虑只
阅读全文
摘要:https://loj.ac/problem/2478 以上面这题为例,这道题斜率是不递增的,并且都是整数。 实数二分很爽,但是效率不高,对于斜率都是整数的,我们可以采用整数二分,但是需要注意一点细节: wqs二分,是找一个斜率,使得第k个成为最优点。 但是,因为斜率可能出现一段相同的情况,因此可能
阅读全文
摘要: 先考虑如何判断一个询问集是否合法。 考虑询问一次$[l,r]$,能把$[1,l 1]∪[r+1,n]$和$[l,r]$区分开来。 现在定义一个块为一个没有被区分开极大的点集合。 当所有块的大小都是1的时候,这个方案就是合法。 性质: 1.一个块是由若干连续段组成,比如下面这样: 111223
阅读全文
摘要:题目大意: $n\le100,m\le10^{10}$,树是随机的。 题解: 考虑设$f(x)$表示乘积为$x$的权值和。 不难发现$f(x)$是一个积性函数,且$f(p)=p n$。 如果能够快速求出$f(p^k)$,那么就可以min_25筛了。 设$cnt[x][y]$表示: 在树上分配指数$a
阅读全文
摘要:https://loj.ac/problem/3034 设$sa$表示a的前缀和,sb表示b的前缀和。 设$f[i][j]$表示n个中的前i个、m个中的前j个完成了,最大的分数和。 如果把第一维去掉,$f[i]$是由$f[i 1]$加上一些修改得到。 那么就是先: 1.$f[j]+=a[i](sa[
阅读全文
摘要:$nl。 记$s=\sum l$,如果最后的和是$v$,那么系数就是挡板问题:$C_{v s 1}^{n 1}$。 范德蒙恒等式:$C_{n+m}^k=\sum_{i=0}^kC_{n}^i C_{m}^{k i}$ 当n、m、k是非负数的时候显然成立,其实n,m是负数时也成立,可以用生成函数解释。
阅读全文
摘要:Description: 给出两个整数 n 和 d ,求出有 n 个节点并且两个节点间最长距离为d的标号树的个数。 标号树即是树上每个结点都标有一个不同的编号。 $n define fo(i, x, y) for(int i = x, _b = y; i = _b; i ) define ll lo
阅读全文
摘要:https://loj.ac/problem/2743 先排序,从小到大考虑。 最暴力直接设$f[i][j][k][u]$表示前i个数,分成j段有顺序的,和差一共为k,首尾确定了u个的方案数。 复杂度是$O(n^3 A)$ 没有用到$L define fo(i, x, y) for(int i =
阅读全文
摘要:https://gmoj.net/senior/ contest/show/2989/2 思考什么时候先手会赢。 一开始双方都不会希望走到直径的端点上,因为那样对方就可以走直径而使自己输掉。 删掉直径的端点,考虑剩下的树的子问题。 如果又走到端点去了,对面就走到另外一个端点,那我就走到下一层的直径端
阅读全文
摘要:"传送门." 题解: 最主要的问题是如何判断一个数是否合法,这就需要发现性质了。 这个状态划分还是不太容易想到, 每次加的数$∈[0,k)$,也就是个位一直在变变变,更高的位每次都是加一,这启发我们状态的划分。 这个时候可以利用数位dp的逐位确定思想,在尝试后,发现可以从高位到低位,因为当高位确定后
阅读全文
摘要:传送门: http://codeforces.com/problemset/problem/848/E 题解: 假设0 n一定有一条边,我们得到了一个方案,那么显然是可以旋转得到其他方案的。 记最大的i满足i到i+n有一条边,那么旋转的方案数是n i 考虑动态规划: 设$g[i]$表示i个点,只用相
阅读全文
摘要:传送门: http://codeforces.com/problemset/problem/398/E 题解: 首先答案不超过2。 最长环=1时,ans=0 最长环=2时,ans=1 否则,ans=2 考虑有长度大于2的环时如何两步出解。 那么第一步肯定是把大环拆成若干长度不超过2的环。 不妨确定一
阅读全文

浙公网安备 33010602011771号