当前位置: 首页 > news >正文

[题解]P9753 [CSP-S 2023] 消消乐

P9753 [CSP-S 2023] 消消乐

好久之前做过的题,因为我们的赛出到了所以把题解也补一下。

Ref: P9753 [CSP-S 2023] 消消乐 题解 - SpadeA261

\(f_i\) 表示以 \(i\) 结尾的答案。则 \(f_i\)\(f_{g_i}\) 转移而来。其中 \(g_i\)\(i\) 之前使 \(s[i,p]\) 合法的最大 \(p\)

对于每个 \(i\) 循环向前跳即可。

时间复杂度 \(O(|\Sigma|n)\),空间复杂度 \(O(n)\)。其中 \(|\Sigma|=26\)

点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=2e6+5;
int n,f[N],g[N],ans;
string s;
signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);cin>>n>>s;s=' '+s;for(int i=1,j;i<=n;i++){for(j=i-1;j>0&&s[i]!=s[j];j=g[j]-1);if(s[i]==s[j]){g[i]=j;f[i]=f[j-1]+1;ans+=f[i];}}cout<<ans<<"\n";return 0;
}

考虑优化时间。

我们令 \(h_i=g_i-1\),则画出来是这样的:

image

我们用 \(a_{i,c}\) 表示使得 \([p,i]\) 合法且 \(a_{p+1}=c\) 的最大的 \(p\)

每次修改 \(a_{i,s_i}\) 即可。

但是这样还是 \(O(|\Sigma|n)\) 的,考虑用路径压缩,记录 \(i\) 所在的链头为 \(to_i\),每次对 \(a\) 的修改和查询都在链头进行。

时间复杂度 \(O(n)\)

点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=2e6+5,C=26;
int n,ans,f[N],a[N][C],to[N];
string s;
signed main(){ios::sync_with_stido(0),cin.tie(0),cout.tie(0);cin>>n>>s,s=' '+s;for(int i=1;i<=n;i++){to[i]=i;int p=a[to[i-1]][s[i]-'a'];if(p) to[i]=to[p-1],f[i]=f[p-1]+1;a[to[i]][s[i]-'a']=i,ans+=f[i];}cout<<ans<<"\n";return 0;
}
http://www.jsqmd.com/news/25163/

相关文章:

  • 备考笔记5
  • 2025年口碑好的光波长光通信检测仪器行业内口碑厂家排行榜
  • zerofs 基于slatedb的文件系统
  • RT-Thread 之信号量使用
  • MPU内存保护单元
  • 2025年反应釜厂家权威推荐榜:搪玻璃反应釜/搪瓷反应釜/开式与闭式反应釜/非标定制,专业制造与耐用性能深度解析
  • 2025年气缸管厂家权威推荐榜:精密气缸管,不锈钢气缸管,珩磨气缸管,薄壁气缸管,焊接气缸管,冷拔气缸管,食品级气缸管,海洋用气缸管厂家精选
  • SD teble
  • 2025 救回数据全靠它!6 款真正好用的安卓恢复软件
  • 2025年空压机油水分离器厂家推荐:五强榜单全解析
  • 开发者必看的 15 个困惑的 Git 术语(以及它们的真正含义)
  • PHP 开发者必看的 15 个困惑的 Git 术语(以及它们的真正含义)
  • 实验2 现代C++编成初体验
  • [题解]P13667 [GCPC 2023] Balloon Darts
  • save 1
  • 提高组模拟赛 39 B. 任务 题解
  • ICPC2022西安 游记(VP)
  • SG-PGM - MKT
  • 使用空间关系匹配时候,由于视角遮挡和分割缺失导致检测不完整,从而影响了关系描述,如何解决? - MKT
  • 语义slam Kimera - MKT
  • 高效CLI应用质量检测工具
  • ICPC2025成都 游记
  • 应用安全 --- vmp流程
  • 语言-地图slam ConceptGraphs: Open-vocabulary 3D scene graphs for perception and planning, - MKT
  • 语义slam Fusion++ - MKT
  • 特征提取器 PointNet++ - MKT
  • 点云配准 GeoTransformer - MKT
  • 点云配准 Deep closest point: Learning representations for point cloud registration, - MKT
  • tryhackme-网络安全基础-命令行- Linux Shells-23
  • 开发Minecraft Forge模组遇到的问题记录