计数DP
FSYo
我不去想是否能够成功,
既然选择了远方,
便只顾风雨兼程
展开
-
「十二省联考 2019」希望 (DP)(容斥)(长链剖分)(回退化)
传送门神题 orzorzorz点边容斥,即对每个点和每条边统计包涵它的个数,那么有简单的 O(n2)O(n^2)O(n2) dpdpdp,即以每一个点为根做一遍,注意到我们可以 up and downup~ and~downup and down 做 dpdpdp,这样可以变成 O(nL)O(nL)O(nL),如下fuj=∏(fvj−1+1)guj=1+gfaj∗∏v≠x(fv,j−2+1)f_{uj}=\prod (f_{vj-1}+1)\\ g_{uj}=原创 2020-05-11 23:57:45 · 251 阅读 · 0 评论 -
「USACO 2020 US Open Platinum」Exercise (容斥)(DP)
传送门考虑枚举划分 SSS:∏Slcm(a1,a2,…,ak)coef(S)\prod_Slcm(a_1,a_2,\dots,a_k)^{coef(S)}S∏lcm(a1,a2,…,ak)coef(S)这个可以反演成 gcdgcdgcd∏S∏Tgcd(a1,a2,…,a∣T∣)coef(S)(−1)∣T∣−1\prod_S \prod_Tgcd(a_1,a_2,\dots,a_{...原创 2020-04-21 23:52:44 · 427 阅读 · 0 评论 -
【省选模拟】Comet OJ - Contest #16 小 C 的奇妙序列(DP)(组合意义)(拆分数)
传送门先说一下 k=2k=2k=2怎么做,要求 E(ai2)=E(∑(ai+aj)2)=2∑E(ai2)+2(∑ai)2E(a_i^2)=E(\sum (a_i+a_j)^2)=2\sum E(a_i^2)+2(\sum a_i)^2E(ai2)=E(∑(ai+aj)2)=2∑E(ai2)+2(∑ai)2所以要维护 (∑ai)2(\sum a_i)^2(∑ai)2,(∑ai+t...原创 2020-03-15 08:55:19 · 225 阅读 · 0 评论 -
「WC2019」数树(生成函数)(树形DP)(容斥)(多项式exp)
LOJLOJLOJ 传送门转换一下题意得到:对于两棵树 T1,T2T1,T2T1,T2,边集是 E1,E2E1,E2E1,E2,那么贡献就是 yn−∣E1∩E2∣y^{n-|E1\cap E2|}yn−∣E1∩E2∣第一问:直接求出并即可第二问:T1T1T1 确定,不妨来枚举 T2T2T2令 F(S)=∑T2[T1∩T2=S]F(S)=\sum_{T2} [T1\cap T2=...原创 2020-03-08 16:51:28 · 336 阅读 · 1 评论 -
[NOI2019] 机器人[DP] [拉格朗日插值]
传送门NOI2019NOI 2019NOI2019 的第5道,听说可以用下降幂维护,但是我用拉格朗日插值怼过去了考虑暴力的dpdpdp,fl,r,kf_{l,r,k}fl,r,k表示区间 [l,r][l,r][l,r] 的最大值为 kkk 的方案数枚举最高点位置,显然并没有东西可以挡住最高点,因此如果区间为奇数,p∈[mid−1,mid+1]p\in [mid-1,mid+1]p∈[mi...原创 2019-10-12 17:12:12 · 288 阅读 · 0 评论 -
【省选模拟】那些年我们画格子(DP)(数数)
挺有意思的数数题首先需要推一些性质:每一个四宫格的颜色各部相同,易证所有的合法矩阵满足下面条件之一:每一行只有两种颜色,相邻两行不同,每一列只有两种颜色,相邻两列不同于是我们对行列分别求一遍把行列都满足的容斥掉。那么我们枚举奇数行的两种颜色,求出这种填法下这一行下修改的个数令 fi,jf_{i,j}fi,j 表示到第 iii 排改了 kkk 个位置的方案数就可以 dpdpdp...原创 2020-02-17 16:55:41 · 284 阅读 · 0 评论 -
「JSOI2018」机器人(数数)(DP)
LOJLOJLOJ 传送门题解:神仙数数题,从性质入手结论 1:一条副对角线上的方向相同,因为如果不相同的话就会有格子没有走到或是从两个方向走过来结论 2:第 iii 条对角线与第 i+gcd(n,m)i+gcd(n,m)i+gcd(n,m) 条对角线相同,证明咕结论 3:有了第 2 个结论,我们可以发现机器人走的路径是循环的,且循环节长度为 gcd(n,m)gcd(n,m)gcd...原创 2020-02-12 15:22:22 · 369 阅读 · 0 评论 -
「NOI2015」寿司晚宴 (DP)
「NOI2015」寿司晚宴其实就是把质因子划分到两个集合考虑 n≤30n\le30n≤30 怎么做,显然质数只有 10 个,我们用 dp[S1][S2]dp[S_1][S_2]dp[S1][S2] 表示两个集合的为 S1,S2S_1,S_2S1,S2 时的方案数,分解每个数转移即可考虑 n≤500n\le 500n≤500,一个数至多有一个 >n>\sqrt n>n...原创 2020-01-31 13:35:31 · 301 阅读 · 0 评论 -
LIS 个数 [树状数组]
传送门这样是O(n^2)的, 我们考虑像最短路计数一样(好像差不多)如果f[j] 可以更新f[i] , 那么就把cnt[i]改成cnt[j], 如果刚好一样,就累加, 否则直接跳过我们重载一下运算符, 树状数组维护#include<bits/stdc++.h>#define N 100050#define LL long long #define P 100...原创 2019-01-28 16:33:23 · 804 阅读 · 0 评论 -
CSP-S 模拟 长寿花 (组合数学)(DP)
传送门NOINOINOI 模拟比 CSPCSPCSP 模拟简单干脆就都说成 CSPCSPCSP 模拟显然按层转移,并且颜色种类没有关系,只关心个数fi,jf_{i,j}fi,j 表示到第 iii 层,有 jjj 种颜色的方案数枚举填几种颜色,val(i,j)val(i,j)val(i,j) 表示 iii 个空格 jjj 个颜色的方案数即 j∗(j−1)i−1j*(j-1)^{i-1}j...原创 2019-11-07 11:32:24 · 233 阅读 · 0 评论 -
CSP-S 模拟 企鹅棋 (组合数学)(DP)
企鹅豆渣在玩企鹅棋,企鹅棋的规则如下:企鹅棋一共有 nnn 个格子,从左到右以1−n1−n1−n 编号。每一个格子会有一种属性SiS_iSi• B 属性格子,从这个格子出发,可以到达其他任意一个格子。• L 属性格子,从这个格子出发,只能跳到左边的格子。• R 属性格子,从这个格子出发,只能跳到右边的格子。棋子从第 sss 号格子出发,最终跳到第 eee 号格子,并且经过每一个格子恰好...原创 2019-11-14 17:06:54 · 403 阅读 · 0 评论 -
「2017 山东一轮集训 Day7」逆序对(生成函数)(容斥)(DP)
传送门题意:长度为 nnn,有 kkk 个逆序对的排列个数?n,k≤1e5n,k\le 1e5n,k≤1e5考虑新填一个数 iii 进去,可能产生的贡献为 [0,i−1][0,i-1][0,i−1],于是问题等价于:∑i=1nai=k,ai∈[0,i−1]\sum_{i=1}^na_i=k,a_i\in[0,i-1]∑i=1nai=k,ai∈[0,i−1] 的方案数其实可以大力生成...原创 2020-01-29 22:45:16 · 506 阅读 · 0 评论