P6189 [NOI Online #1 入门组] 跑步(分拆数)
简要题意
给你一个整数
分析
考虑一个显然的 DP:设
考虑优化。
注意到当取的数较大的时候,取的数不会太多。
考虑根号分治,设阈值
int n,mod;
int f[maxm][maxn],g[maxm][maxn];
int F[maxn],G[maxn];
void add(int &x,int y){x+=y,x=x>=mod?x-mod:x;}
void solve_the_problem(){
rd(n),rd(mod);
f[0][0]=1;
rep(i,1,B-1)rep(j,0,n){
add(f[i][j],f[i-1][j]);
if(j>=i)add(f[i][j],f[i][j-i]);
}
rep(i,0,n)F[i]=f[B-1][i];
g[0][0]=G[0]=1;
rep(i,1,B)rep(j,0,n){
if(j>=B)add(g[i][j],g[i-1][j-B]);
if(j>=i)add(g[i][j],g[i][j-i]);
add(G[j],g[i][j]);
}
int ans=0;
rep(i,0,n)ans=(ans+1ll*F[i]*G[n-i]%mod)%mod;
write(ans);
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战