不会五边形数的菜鸡的分块乱搞

LOJ #6268


题意

求前$ n$个数的整数划分方案数,$ n \leq 10^5$


$ Solution$

考虑暴力$ DP$

$ f(x,y)$表示放了$ x$个物品总体积为$ y$的方案数

转移分增加一个物品和将前面所有物品的体积均增加$ 1$两种

$ g(x,y)$表示用大小不超过$x$的物品装出体积为$y$的方案数

类似完全背包转移即可

对$ n$分块

对大小不超过$ \sqrt{n}$的物品采取第二种转移方式,时间复杂度$ O(n \sqrt{n})$

对大小超过$ \sqrt{n}$的物品由于数量不超过$ \sqrt{n}$种,采取第一种转移方式,时间复杂度同上

然后用$ NTT$合并即可

总复杂度可被看成$ O(n \sqrt{n})$


$ my \ code$

#include<ctime>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#define p 998244353
#define rt register int
#define ll long long
using namespace std;
inline ll read(){ll x = 0; char zf = 1; char ch = getchar();while (ch != '-' && !isdigit(ch)) ch = getchar();if (ch == '-') zf = -1, ch = getchar();while (isdigit(ch)) x = x * 10 + ch - '0', ch = getchar(); return x * zf;
}
void write(ll y){if(y<0)putchar('-'),y=-y;if(y>9)write(y/10);putchar(y%10+48);}
void writeln(const ll y){write(y);putchar('\n');}
int i,j,k,m,n,x,y,z,cnt;
int A[270010],B[270010],R[270010],b[335][100010];
int ksm(int x,int y){int ans=1;for(rt i=y;i;i>>=1,x=1ll*x*x%p)if(i&1)ans=1ll*x*ans%p;return ans;
}
void NTT(int n,int *A,int fla){for(rt i=0;i<n;i++)if(i>R[i])swap(A[i],A[R[i]]);for(rt i=1;i<n;i<<=1){int w=ksm(3,(p-1)/2/i);for(rt j=0;j<n;j+=i<<1){int K=1;for(rt k=0;k<i;k++,K=1ll*K*w%p){int x=A[j+k],y=1ll*K*A[i+j+k]%p;A[j+k]=(x+y)%p,A[i+j+k]=(x-y)%p;}}}if(fla==-1){reverse(A+1,A+n);int invn=ksm(n,p-2);for(rt i=0;i<n;i++)A[i]=1ll*A[i]*invn%p;}
}
int main(){n=read();int blo=(int)sqrt(n);A[0]=1; for(rt i=1;i<=blo;i++)for(rt j=i;j<=n;j++)(A[j]+=A[j-i])%=p;b[0][0]=1;for(rt i=1;i*blo<=n;i++)for(rt j=1;j+i*blo<=n;j++){b[i][j]=(b[i-1][j-1]+((j>=i)?b[i][j-i]:0))%p;(B[j+i*blo]+=b[i][j])%=p;}A[0]=B[0]=1;int lim=1;while(lim<=n+n)lim<<=1;for(rt i=1;i<lim;i++)R[i]=(R[i>>1]>>1)|(i&1)*(lim>>1); NTT(lim,A,1);NTT(lim,B,1);for(rt i=0;i<lim;i++)A[i]=1ll*A[i]*B[i]%p;NTT(lim,A,-1);for(rt i=1;i<=n;i++)writeln((A[i]+p)%p);return 0;
}

转载于:https://www.cnblogs.com/DreamlessDreams/p/10079374.html

LOJ #6268 分拆数相关推荐

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

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

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

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

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

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

  4. 高等组合学笔记(八):第一类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, ...

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

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

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

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

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

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

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

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

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

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

最新文章

  1. phpstorm安装_PHPstorm设置浏览器打开代码
  2. MySQL数据库(十) 一一 数据库的导出和导入
  3. 如何备考上海市高等学校计算机一级,如何备考全国计算机一级等级考试
  4. mfc 监控文件操作_mfc是什么
  5. linux 创建ll,两台linux建立GRE隧道
  6. IDEA15 下运行Scala遇到问题以及解决办法
  7. 如何选择适合你的企业数据管理类产品
  8. 从XMLHttpRequest中获取请求的URL
  9. Python+OpenGL使用鼠标选择模型不同组成部分
  10. 云原生与数据中台,企业数字化转型的“正确打开方式”
  11. Andriod 从源码的角度详解View,ViewGroup的Touch事件的分发机制
  12. java循环之后求和代码,Java lambda 循环累加求和代码
  13. 操作系统—进程的定义、组成和组织方式(思维导图)
  14. nodejs使用supervisor插件调试效率
  15. System Toolkit for Mac(系统维护工具)
  16. Mysql统计同一字段不同值的个数
  17. dcs world f15c教学_你使用的DCS系统靠谱吗?!
  18. 12款免费的桌面便签软件
  19. 如何修复Sketchup经常遇到的错误报告问题
  20. Android6.0 源码修改之屏蔽系统短信功能和来电功能

热门文章

  1. linux下如何使用sftp命令【转】
  2. hive 常用UDF
  3. [041] 微信公众帐号开发教程第17篇-应用实例之智能翻译
  4. 微信开发--自定义菜单
  5. 记录一下alibaba cloud boot 版本对应关系
  6. 矩形波如何傅立叶展开_金科文化会不会连续拉板?两位同学展开激辩
  7. java zar_唬人的Java泛型并不难
  8. mysql动态代理_超全MyBatis动态代理详解(绝对干货)
  9. java 模板模式_Java模板模式(Template模式)
  10. mysql 1786_mysql错误处理之ERROR 1786 (HY000)