
背包dp
stargazer.
夜を穿つの
展开
-
【LOJ #6268】分拆数(DP / 生成函数)
可以参见EIEIEI的博客传送门首先有一个exp\expexp的O(nlogn)O(nlogn)O(nlogn)做法这里考虑Ferrers图Ferrers图Ferrers图从左上角向右下截一个最大的正方形设正方形边长为hhh那么剩下两部分就都是≤h\le h≤h的整数拆分即可以列出分拆数的生成函数∏i≥111−xi=∑h≥1xh2(∏k=1h11−xk)\prod_{i\geq...原创 2020-03-28 18:56:10 · 585 阅读 · 0 评论 -
【洛谷 P4156】 [WC2016]论战捆竹竿(border相关 / 同余最短路)
传送门显然是把所有borderborderborder拿出来做背包但显然跑不过去于是考虑做同余最短路显然是在%n\%n%n下做但还是过不了考虑borderborderborder的性质形成logloglog个等差数列顺便在这里补一下证明:设A,BA,BA,B为SSS两个borderborderborder且都满足∣A∣,∣B∣≥∣S∣2|A|,|B|\geq\frac{|S|}...原创 2020-03-13 18:58:25 · 348 阅读 · 0 评论 -
【LOJ #6077】「2017 山东一轮集训 Day7」逆序对(生成函数+DP)
传送门设f[i][j]f[i][j]f[i][j]为iii个数,逆序对数位jjj的方案数显然枚举iii放在哪里可以得到dpdpdp式f[i][j]=∑k=0min(i−1,j)fi−1,j−kf[i][j]=\sum_{k=0}^{min(i-1,j)}f_{i-1,j-k}f[i][j]=∑k=0min(i−1,j)fi−1,j−k写成生成函数的形式实际上就是∏i=0n−1(∑j=...原创 2020-02-02 17:23:17 · 313 阅读 · 0 评论 -
【LOJ #6089】小 Y 的背包计数问题(DP)
传送门显然直接背包dpdpdp用前缀和做可以做到n2n^2n2考虑令k=nk=\sqrt nk=n对于前kkk小暴力背包后面[k+1,n][k+1,n][k+1,n]的显然怎么选都不会超过个数的限制令f[i][j]f[i][j]f[i][j]表示已经有iii个数,和为jjj的方案数考虑这样dp:dp:dp:1、1、1、新加入一个大小为k+1k+1k+1的数2、2、2、将之前iii...原创 2020-02-01 14:08:54 · 469 阅读 · 0 评论 -
【BZOJ 3462】DZY Loves Math II(组合数学+DP)
传送门显然可以发现s=∏i=1kpis=\prod_{i=1}^{k}p_is=∏i=1kpi时答案才不为000考虑把每个pip_ipi的贡献表示为ki∗s+bi∗pik_i*s+b_i*p_iki∗s+bi∗pi的形式(bipi<s)(b_ip_i<s)(bipi<s)那么最终也就是s∑ki+∑bipi=ns\sum k_i+\sum b_ip_i=ns∑...原创 2020-01-19 19:14:35 · 326 阅读 · 0 评论 -
【洛谷 P5289】【十二省联考】—皮配(背包dp)
传送门分成三类不受影响的城市以及城市的学校受影响的城市里不受影响的学校受影响的学校第一类可以直接O(nc)O(nc)O(nc)分别dpdpdp阵营和派系后乘起来第二类可以和第一类一起dpdpdp派系但不考虑阵营第三类暴力O(kc2)dpO(kc^2)dpO(kc2)dp即可#include<bits/stdc++.h>using namespace std;cons...原创 2019-09-20 12:59:44 · 159 阅读 · 0 评论 -
【CSP-S 2019模拟】T2—仙人球(仙人掌+背包)
传送门感觉主要还是因为没做过仙人掌的题吧还是很简单的一个背包把每个环提出来,定一个根拆环为链计算不经过根的否则就肯定是根开始左右分别一段记录前后缀拼起来强制一边必须选到某个位置,另一边就是一个前缀和复杂度O(nk2)O(nk^2)O(nk2)#include<bits/stdc++.h>using namespace std;const int RLEN=1&...原创 2019-09-11 21:41:04 · 246 阅读 · 0 评论 -
【NOIp2019模拟】题解
T1:一个显然的背包dpdpdp枚举最长的长度f[i][j]f[i][j]f[i][j]表示前iii个选了jjj种数的方案主要考场傻逼了转移的时候枚举了某个数选几个实际上只需要看和前面一个是否相同#include<bits/stdc++.h>using namespace std;const int RLEN=1<<20|1;inline char gc...原创 2019-09-09 08:49:29 · 271 阅读 · 0 评论 -
【BJOI2019 Day2】简要题解
感觉2天难度不在一个档次上。。。。T1:传送门很普及−-−离散化O(n3)O(n^3)O(n3)背包即可#include<bits/stdc++.h>using namespace std;const int RLEN=1<<20|1;inline char gc(){ static char ibuf[RLEN],*ib,*ob; (ob=...原创 2019-09-05 14:39:19 · 251 阅读 · 0 评论 -
【BZOJ5250】【2018九省联考】—秘密袭击(树形dp)
传送门据说正解要线段树合并+拉格朗日插值+生成函数我选择暴力艹标算暴力树上dp+剪枝就可以了f[i][j]f[i][j]f[i][j]表示以iii为根的子树,联通块有jjj个点时的答案如果当前所有大于枚举到的www的点都小于kkk个那么再大也不行了可以直接breakbreakbreak掉#include<bits/stdc++.h>using namespace std...原创 2019-02-26 08:54:02 · 119 阅读 · 0 评论