首页 > 其他分享 >CCPC Final 2023 B. Periodic Sequence

CCPC Final 2023 B. Periodic Sequence

时间:2024-11-06 17:08:21浏览次数:1  
标签:le frac Sequence sum 2x Periodic 2023 include ab

https://vjudge.net/problem/QOJ-8543

给定 \(n\),对于 \(i=1,2,\ldots,n\) 求出最长可能的周期字符串序列长度 F(i),满足序列中字符串的长度 \(≤i\)。一个字符串序列 \(S_1,S_2,\ldots,S_l\) 是周期字符串序列,当且仅
当对于每个 \(1≤i<l\) 都满足 \(S_i\) 是 \(S_{i+1}\) 的周期,并且它们两两不同。(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 领导的这一段分析:

  1. 抓出 ab 后的每一个 a 开头的串,形似整数拆分;
  2. 整数拆分是有序的;
  3. 拆分的整数都不能超过开头 ab 串的长度(2)。
  4. 被拆分的整数不超过 n-|ab|。

即求序列 x 的个数,使得 \(\sum x\le n\),\(x_i\le x_1\)。

枚举开头 abb... 串的长度 x1=k,得 F(n) 的生成函数:

\[\frac1{1-x}\sum_{k\ge1}\frac{x^k}{1-\sum_{1\le i\le k}x^i}=\frac1{1-x}\sum_{k\ge1}\frac{x^k}{1-\frac{x-x^{k+1}}{1-x}} \]

外面乘的 \(\frac1{1-x}\) 是因为总和不超过 n 而不是恰好等于 n。

化简:

\[\sum_{k\ge1}\frac{x^k}{1-(2x-x^{k+1})} \]

\(k\le\sqrt n\) 时,暴力计算贡献。具体来说,不断地给初始多项式 \(x^k\) 乘上 \((2x-x^{k+1})\),再加上 \(x^k\)。可以写成完全背包转移。

\(k>\sqrt n\) 时,化原式:

\[\begin{aligned}&\frac{x^k}{(1-2x)(1-\frac{-x^{k+1}}{1-2x})}\\ =&\frac{x^k}{1-2x}\sum_{j\ge0}\left(\frac{-x^{k+1}}{1-2x}\right)^j\\ =&\sum_{j\ge0}(-1)^{j}\frac{x^{(k+1)j+k}}{(1-2x)^{j+1}} \end{aligned}\]

显然 \(j\le\sqrt n\) 的是有用的。\(j\) 从大到小枚举,加完贡献后乘 \(\frac1{1-2x}\),还是完全背包转移。

看 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;
}

标签:le,frac,Sequence,sum,2x,Periodic,2023,include,ab
From: https://www.cnblogs.com/Zaunese/p/18530545

相关文章

  • 关于idea连接数据库时报错:Cannot run program E:\IntelliJ_IDEA_2023.3.4\jbr\bin
    问题说明连接mysql数据库时在点击testconnection时弹出的问题:CannotrunprogramE:\IntelliJ_IDEA_2023.3.4\jbr\bin\javacreateprocesserror=5,拒绝访问查询多个网站都没有找到解决方案。解决方法点击左侧Drivers,找到MySQL右侧点击Advanced在最下方的VMhome......
  • Stack Overflow 2023 年开发者调查报告!
    StackOverflow发布了2023年开发者调查报告,据称共计超过9万名开发者参与了此次调查。完整报告包含了受访开发者画像,以及关于开发技术、AI、职业、社区等方面的内容。本文主要介绍关于开发技术和AI的部分。懒人目录:最流行编程语言:JavaScript最“赚钱”编程语言......
  • [2023四校联考3]flandre
    flandre题目:芙兰朵露有nn种烟花,每种都有两个参数:「真实效果」aa和「感觉效果」bb,其中「真实效果」是一个给定不变的整数(可以为负),「感觉效果」初值等于「真实效果」。将烟花按一定顺序燃放,先燃放的烟花会使得后面「真实效果」较差的烟花「感觉效果」更差,「真实效果」更优的「......
  • PyTorchStepByStep - Chapter 9: Sequence-to-Sequence
     points,directions=generate_sequences(n=256,seed=13)Andthenlet’svisualizethefirstfivesquares:classEncoder(nn.Module):def__init__(self,n_features,hidden_dim):super().__init__()self.n_features=n_features......
  • 2024-2025-1 20231406《计算机基础与程序设计》第五周助教总结
    2024-2025-120231406《计算机基础与程序设计》第五周助教总结课程答疑由于这两周进行了C语言第一次实验,同学们的问题主要集中在实验上C语言开发环境的搭建集中体现于在ESC上新建目录,编译程序,运行代码等步骤。主要原因是大家对一些指令不太理解,经常出现输入错误的情况。希望......
  • 上市公司专利质量数据-原始+stata代码+结果(1990-2023年)
    为了测算上市公司专利质量,本文通过分析公司所申请专利的主分类号,并采用知识宽度来衡量专利质量。中国的IPC分类号采用“部-大类-小类-大组-小组”的格式,如“A01B01/00”。若仅根据专利分类号数量评估专利质量可能存在偏差,因此本文参考赫芬达尔指数计算企业在不同大组下的专利分......
  • CF2023C Trinity
    CF2023CTrinity一道很好的思维题,当然也是令我痛心疾首。本来这场都不打算做,看了看C觉得很有思路,于是先交了一发,结果WA了,但是为时已晚,只能硬着头皮把剩下的题交完,结果B题wa了五发,典中典之抽象王,直接扣回老家。分析显然的是如果要判断一个序列是否合法,只需要排序过后取两个最小......
  • 如何在 iPhone 上关闭闹钟 [2023]
    ​关闭iPhone上的闹钟需要遵循以下步骤:1.打开“时钟”应用;2.选择“闹钟”选项;3.找到设置的闹钟并关闭;4.若需要,删除不再使用的闹钟;5.确保已设置的闹钟时间与实际需求相符。首先,我们需要确定要操作的闹钟。1.打开“时钟”应用从iPhone的主屏幕中找到并点击“时钟”图......
  • 2023CSP-S 复赛模测(日记和×××) - 模拟赛记录
    Preface这套题说实话挺水的,它的水不仅仅是在数据上(实际得分比期望得分高了\(50+\)分),而且正解也神奇得不像个正解(全是各种分类讨论卡子任务的,感觉像是出题人水平不够一样)。日记和最短路(shortway)(话说最短路的英语不应该是shortestpath吗?)题目中给了一个DAG,然后要求用两种方......
  • “范式杯”2023牛客暑期多校训练营1
    现在真的啥也不会了。。。D Chocolate首先考虑极端情况,1$\times$1的网格的话,先手必输。考虑其他情况,如果只能一个一个吃的话,显然是和奇偶相关的。对于先手来说,偶数自己赢,奇数是自己输。那么在矩阵中,虽然有着限制,但通过推小的例子可以发现,两方还是可以控制吃的数量的。对于先手......