可以先将问题建模为 : 物品大小为1~inf 且每件物品数量无限 的背包选体积为1~n的方案数。

显然物品体积只有1~n有用,我们不妨把 体积1~sqrt(n) 的物品先暴力插入到背包中,设这一部分最后 体积i的方案数是 A[i] 。

考虑体积>sqrt(n)的物品怎么计算方案,可以发现这样的物品最多只能有sqrt(n)件。

这有什么用呢? 当然是dp用啊! 设f[i][j] 为选了i件>sqrt(n)的物品,且总体积是j的方案数,显然第一维只有sqrt(n),直接转移做就行了,设这一部分最后 体积i的方案数是B[i]。

不过还有一点很恶心:我们还要合并 A[] 与 B[]。

也没啥,写个NTT就好了hhhh

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=100005,root=3,ha=998244353,inv=ha/3+1,Base=333;
inline int add(int x,int y){ x+=y; return x>=ha?x-ha:x;}
inline void ADD(int &x,int y){ x+=y; if(x>=ha) x-=ha;}
void W(int x){ if(x>=10) W(x/10); putchar(x%10+'0');}
int A[maxn*4],F[Base+5][maxn],B[maxn*4],r[maxn*4],n,l,S,N,INV;
inline int ksm(int x,int y){ int an=1; for(;y;y>>=1,x=x*(ll)x%ha) if(y&1) an=an*(ll)x%ha; return an;}inline void dp(){A[0]=1;for(int i=1;i<Base;i++)for(int j=i;j<=n;j++) ADD(A[j],A[j-i]);F[0][0]=1,S=maxn/Base+1,F[1][Base]=1;for(int i=1;i<S;i++)for(int j=0;j<=n;j++) if(F[i][j]){if(j+i<=n) ADD(F[i][j+i],F[i][j]);if(j+Base<=n) ADD(F[i+1][j+Base],F[i][j]);ADD(B[j],F[i][j]);}ADD(B[0],1);
}inline void NTT(int *c,int f){for(int i=0;i<N;i++) if(i<r[i]) swap(c[i],c[r[i]]);for(int i=1;i<N;i<<=1){int omega=ksm((f==1?root:inv),(ha-1)/(i<<1));for(int P=i<<1,j=0;j<N;j+=P){int now=1;for(int k=0;k<i;k++,now=now*(ll)omega%ha){int x=c[j+k],y=c[j+k+i]*(ll)now%ha;c[j+k]=add(x,y);c[j+k+i]=add(x,ha-y);}}}if(f==-1) for(int i=0;i<N;i++) c[i]=c[i]*(ll)INV%ha;
}int main(){scanf("%d",&n),dp();for(N=1;N<=(n<<1);N<<=1) l++;for(int i=0;i<N;i++) r[i]=(r[i>>1]>>1)|((i&1)<<(l-1));NTT(A,1),NTT(B,1);for(int i=0;i<N;i++) A[i]=A[i]*(ll)B[i]%ha;INV=ksm(N,ha-2),NTT(A,-1);for(int i=1;i<=n;i++) W(A[i]),puts("");return 0;
}

  

转载于:https://www.cnblogs.com/JYYHH/p/8954965.html

LOJ #6268. 分拆数相关推荐

  1. LOJ #6268 分拆数

    不会五边形数的菜鸡的分块乱搞 LOJ #6268 题意 求前$ n$个数的整数划分方案数,$ n \leq 10^5$ $ Solution$ 考虑暴力$ DP$ $ f(x,y)$表示放了$ x$个 ...

  2. [Note] 多项式全家桶 小球与盒子 分拆数

    - Partition NumberReference p r ( n ) p_r(n) pr​(n) 表示将正整数 n n n 拆分为若干个不大于 r r r 的正整数的和的方案数(无序). 1.你 ...

  3. 高等组合学笔记(十): 分拆数恒等式, 分拆函数同余性质

    分拆数恒等式 定理6 : Gauss分拆恒等式 1(x:q)∞=∑n≥0xn(q:q)n.\frac1{(x:q)_\infty}=\sum_{n\geq0}\frac{x^n}{(q:q)_n.} ...

  4. 知识点 - 分拆数/整数拆分

    知识点 - 分拆数/整数拆分 解决问题类型: 将一个数用一个或多个正整数的无序和来表示有几种方案. 这是一个母函数的应用,利用了母函数的指数系数是五边形数来优化复杂度. 结论 (1)称正整数n分解为r ...

  5. 高等组合学笔记(八):第一类Stirling数, 整数分拆

    第一类Stirling数的递推关系式 定理A: s(n,k)=s(n−1,k−1)−(n−1)s(n−1,k),(n,k≥1),s(n,0)=s(0,k)=0,(n,k≥1),s(0,0)=1s(n, ...

  6. 高等组合学笔记(十一):分拆与Gauss二项式系数,恒等式与展开式

    分拆与Gauss二项式系数 定义: Pl(n∣⩽m)P_l(n|\leqslant m)Pl​(n∣⩽m): nnn的lll部分拆, 且每部分⩽m\leqslant m⩽m的分拆数; Pl(n∣⩽m) ...

  7. 高等组合学笔记(九): 球盒模型的十二模式,分拆的生成函数

    球盒模型的十二模式 n球⟶fk盒n球\stackrel{f}{\longrightarrow}k盒 n球⟶f​k盒 nnn球 kkk盒 fff单 fff满 fff不加限制 不同 不同 ① ② ③ 相同 ...

  8. 15拆分成3个不同的自然数_小学二年级奥数训练题之分拆

    做奥数题有助于我们能力的提升,不仅在数学方面,其他方面也是很有帮助的,主要是让我们多动脑思考.下面为大家带来小学二年级奥数训练题. 小学二年级奥数训练题 整数分拆问题是一个古老而又十分有趣的问题.所谓 ...

  9. 百度不再效仿谷歌,否认分拆阿波罗

    https://www.toutiao.com/a6695525662188372483/ 在百度阿波罗项目站在"分拆传闻"风口浪尖之时,有必要对其发展历史和现状进行分析研究,以期 ...

  10. 马斯克放话,星链率先从SpaceX分拆上市,曾预计带来300亿美元营收

    杨净 发自 凹非寺  量子位 报道 | 公众号 QbitAI 马斯克放话,Starlink将在未来率先分拆上市. 这个消息,其实也早有预兆. SpaceX总裁Gwynne Shotwell在今年2月份 ...

最新文章

  1. R语言应用str_match函数和str_match_all函数从字符串抽取匹配的字符串模式:str_match函数抽取第一个匹配的字符串模式、str_match_all函数抽取多个匹配的字符串模式
  2. win10 计算机网络密码,win10系统电脑如何查看wifi密码 win10系统电脑查看wifi密码方法【介绍】...
  3. NIO和BIO如何影响应用程序的设计-数据处理
  4. php7性能原理,php7卓越性能背后的原理有哪些?
  5. 需求说明 用户登陆功能的实现 c#
  6. WCF存储图片到指定文件夹下
  7. ATS连接 https
  8. 介绍一本好书《海量数据库解决方案》
  9. IP地址库ipip.net
  10. 适合小型团队的在线文档管理系统【minDoc】
  11. Qnap NAS + Emby Server + Kodi
  12. 设置iSCSI的发起程序(客户端)(三)
  13. 非线性最小二乘求解方法详解
  14. 分享十一个学习css的小游戏,快来下载吧!
  15. Windows10解决耳机被识别为扬声器问题
  16. 5W无线充发射IC芯片方案XPM7105、XPM7305 无线充SOC芯片
  17. mac查找字符串并替换
  18. git仓库迁移(阿里云git切换到公司内部的gitlab)
  19. Bringing up interface eth0: Device eth0 does not seem to be present, delaying initialization.
  20. KubeEdge环境搭建(支持网络插件flannel)

热门文章

  1. springmvc学习一初始化源码
  2. java IO之字节流和字符流-OutputSteam和InputStream
  3. 双目视觉图像的色彩调整
  4. Windows UWP开发系列 – 控件默认样式
  5. 计算机毕业生学士服,特殊毕业季,这些“别人家的高校”为毕业生送上定制版学士服...
  6. python迭代器和生成器_python迭代器和生成器
  7. linux7 vnc 黑屏,51CTO博客-专业IT技术博客创作平台-技术成就梦想
  8. java json 替换属性值_替换JSONObject某个对象的值
  9. wdcp v2.5.15 php版本,linux服务器/虚拟主机管理系统wdcp v2.5.6版本发布
  10. linux 环境变量_linux的环境变量