P4389 付公主的背包 题目背景 付公主有一个可爱的背包qwq 题目描述 这个背包最多可以装\(10^5\)大小的东西 付公主有\(n\)种商品,她要准备出摊了 每种商品体积为\(V_i\),都有\(10^5\)件 给定\(m\),对于\(s\in [1,m]\),请你回答用这些商品恰好装\(s\)体积的方案数 输入输出格式 输入格式: 第一行\(n,m\) 第二行\(V_1\sim V_n\) 输出格式: \(m\)行,第\(i\)行代表\(s=i\)时方案数,对\(998244353\)取…
题目传送门:洛谷 P4389. 题意简述: 有 \(n\) 个物品,每个物品都有无限多,第 \(i\) 个物品的体积为 \(v_i\)(\(v_i\le m\)). 问用这些物品恰好装满容量为 \(i\) 的背包的方案数,两个方案不同当且仅当存在某一个物品的选取数量不同. 你需要对 \(i\in [1,m]\) 回答,答案对 \(998,244,353\) 取模. 题解: 对于一个体积为 \(v\) 的物品,它装满容量为 \(x\) 的背包的方案数序列为 \(a_x=[v|x]\). 例如 \(…
题目链接戳这里 题目描述 有\(n\)件不同的商品,每件物品都有无限个,输出总体积为\([1,m]\)的方案数 思路 直接跑背包有\(30\) 考虑把每个物品的生成函数设出来,对于一件体积为\(v\)的物品: \[f(x)=1+x^v+x^{2v}+\cdots +x^{kv}+\cdots \] 那么答案\(F(x)\)就是每个物品的\(f\)卷起来: \[F(x)=\prod\limits_{i=1}^{n}f_i(x)=\prod\limits_{i=1}^{n}\frac{1}{1-x^…
传送门 同样是回过头来发现不会做了,要加深一下记忆. 思路 只要听说过生成函数的人相信第一眼都可以想到生成函数. 所以我们要求 \[ ans=\prod \sum_n x^{nV}=\prod \frac{1}{1-x^V} \] 也就是\(\prod (1-x^V)\). 但这玩意好像还是不会做,怎么办呢? 按照套路,可以先\(\ln\)一下,加起来,再\(\exp\)回去. 所以现在要求 \[ \sum \ln(1-x^V) \] -- -- -- 不会. 不会怎么办? 打表找规律! 经过打…
题目大意:有$n(n\leqslant10^5)$种物品,第$i$个物品体积为$v_i$,都有$10^5$件.给定$m(m\leqslant10^5)$,对于$s\in [1,m]$,请你回答用这些商品恰好装$s$体积的方案数 题解:(by Weng_weijie) 背包问题模板(误) 对每个物品构造生成函数$F(x)=\displaystyle\sum_{i=0}^{\infty}x^{vi}=\dfrac{1}{1-x^v}$ 然后所有相乘就得到答案(不会乘) 对每个多项式求$\ln$加起来…
题目:https://www.luogu.org/problemnew/show/P4389 关于泰勒展开: https://blog.csdn.net/SoHardToNamed/article/details/80550935 https://www.cnblogs.com/guo-xiang/p/6662881.html 大概就是:\( f(x) = \sum\limits_{i=0}^{n}\frac{ f^{(i)}(x_0) }{i!}(x-x_0)^i +R_n\) 麦克劳林展开就…
P4495 [HAOI2018]奇怪的背包 题目描述 小\(C\)非常擅长背包问题,他有一个奇怪的背包,这个背包有一个参数\(P\),当他 向这个背包内放入若干个物品后,背包的重量是物品总体积对\(P\)取模后的结果. 现在小\(C\)有\(n\)种体积不同的物品,第\(i\)种占用体积为\(V_i\),每种物品都有无限个. 他会进行\(q\)次询问,每次询问给出重量\(w_i\),你需要回答有多少种放入物品的方案,能将一个初始为空的背包的重量变为\(w_i\).注意,两种方案被认为是不同的,…
P2323 [HNOI2006]公路修建问题 题目描述 输入输出格式 输入格式: 在实际评测时,将只会有m-1行公路 输出格式: 思路: 二分答案 然后把每条能加的大边都加上,然后加小边 但在洛谷的题解中,没有采用二分答案而直接先处理k条大边,再处理小边的做法我认为是有问题的,欢迎证明或证伪. Code: #include <cstdio> #include <algorithm> const int N=10010; const int M=20010; struct node…
传送门 神仙题鸭!orz dkw 暴力就是完全背包 而完全背包可以和生成函数扯上关系,记第i种物品质量为\(a_i\),那么这种物品的生成函数\(G(i)=\sum_{j=0}^{\infty}x^{a_ij}\),最后体积为i的答案即为这n个生成函数的卷积的第i项系数 然而用卷积复杂度为\(O(mnlogm)\),还不如暴力.说道卷积,我就想起了可以把多项式先求\(ln\),然后加起来,最后求\(exp\).只不过每个函数求\(ln\)复杂度还是不行,我们打表发现\(lnG(i)=\sum_{…
注意 初始化的时候要这样写 for(int i=1,x;i<=n;i++){ scanf("%d",&x); v[x]++; } for(int i=1;i<=m;i++){ if(v[i]){ for(int j=1;j<=m/i;j++) a[i*j]=(a[i*j]+1LL*v[i]*invx[j]%MOD)%MOD; } } 这样写的复杂度是调和级数(\(O(n\log n)\)) 不能这样写 for(int i=1;i<=n;i++){ sca…