1.P6781 [Ynoi2008] rupq2.SNOI 2020 排列 题解3.ICPC WF 2022 2023 Bridging the Gap 过桥4.2023 ICPC Seoul Regional A. Apricot Seeds(Pjudge【NOIP Round #7】冒泡排序)
5.CCPC Final 2023 B. Periodic Sequence
6.OCPC2024Day1/3rd ucup stage3 Formal Fring7.[PKUSC 2023 D1T3] 天气预测8.[PKUWC 2025 D2T1]网友小 Z 的树9.[PKUWC2025 D2T2]盒子10.[集训队互测2024]建设终末树https://vjudge.net/problem/QOJ-8543
给定 ,对于 求出最长可能的周期字符串序列长度 F(i),满足序列中字符串的长度 。一个字符串序列 是周期字符串序列,当且仅
当对于每个 都满足 是 的周期,并且它们两两不同。(n<=2e5)
先求单个 F(n)。
手玩几下,发现:第一个串一定是长为 n 的,并且一定是 abbbb... 形式。
:abbbb :abbb abbba :abb abbab abba abbaa :ab ababa abab aba abaab abaa abaaa :a aa aaa aaaa aaaaa
观察冒号处的前缀最小值。后面拖了一段串。抓 ab
领导的这一段分析:
- 抓出
ab
后的每一个a
开头的串,形似整数拆分; - 整数拆分是有序的;
- 拆分的整数都不能超过开头
ab
串的长度(2)。 - 被拆分的整数不超过 n-|
ab
|。
即求序列 x 的个数,使得 ,。
枚举开头 abb... 串的长度 x1=k,得 F(n) 的生成函数:
外面乘的 是因为总和不超过 n 而不是恰好等于 n。
化简:
时,暴力计算贡献。具体来说,不断地给初始多项式 乘上 ,再加上 。可以写成完全背包转移。
时,化原式:
显然 的是有用的。 从大到小枚举,加完贡献后乘 ,还是完全背包转移。
看 Dairuichen007 学会的代码。
#include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #define fi first #define se second #define mkp std::make_pair using ll=long long; using llu=unsigned long long; using std::max; using std::min; template<class T> void cmax(T&a,T b){a=max(a,b);} template<class T> void cmin(T&a,T b){a=min(a,b);} const int NV=3e3; ll mod; namespace xm{ int N,ans[NV+5],f[NV+5],g[NV+5]; void lB(int k){ memset(f,0,sizeof f); f[k]=1; for(int i=k+1;i<=N;++i) f[i]=(2ll*f[i-1]+mod-f[i-k-1])%mod; for(int i=1;i<=N;++i) ans[i]=(ans[i]+f[i])%mod; }void _(){ scanf("%d%lld",&N,&mod); int B=sqrt(N); for(int i=1;i<=B;++i) lB(i); for(int x=B;~x;--x){ for(int k=B+1;k<=N;++k){ const int i=(k+1)*x+k; if(i<=N) g[i]=(g[i]+(x&1?mod-1:1))%mod; } for(int i=1;i<=N;++i) g[i]=(g[i]+2ll*g[i-1])%mod; } for(int i=1;i<=N;++i) ans[i]=(ans[i]+g[i])%mod; for(int i=1;i<=N;++i) printf("%lld ",ans[i]); puts(""); } } int main(){ xm::_(); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】