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

【做题记录】P9753 [CSP-S 2023] 消消乐

题目链接

这道题状态设计十分巧妙。

直接转移显然不切实际。我们不妨“消消乐”的性质入手:

如果区间 \([i,j],[j+1,k]\) 都是可消除的,那么 \([i,k]\) 一定也是可消除的。根据此性质,我们设置辅助数组 \(g\) 维护当前字符可以和之前那个字符形成区间并且区间是可消除的。

具体步骤如下:

  • 我们从 \(j=i-1\) 开始,一直往前跳 \(j=g_j -1\),这样如果遇到有一个位置 \(s_j=s_i\) 的话,新的 \(g_i\) 就是 \(j\) 了。

状态的转移:\(f_i=f_{g_i-1}+1\)

最终答案:\(\sum_{i=1}^n f_i\)

代码如下:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N(2e6+5);
int n,g[N];
ll f[N],ans;
string s;
int main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>n>>s;for(int i(1);i<=n;++i){for(int j(i-1);j>0;j=g[j]-1){if(s[j-1]==s[i-1]){g[i]=j;break;}}if(g[i])f[i]=f[g[i]-1]+1,ans+=f[i];}cout<<ans;return 0;
}
http://www.rkmt.cn/news/23812.html

相关文章:

  • 南京icpc-c题:
  • 学生信息管理系统(DAO模式重构)项目报告
  • 开源嵌入模型对比:让你的RAG检索又快又准
  • 智慧城市基础设施漏洞分析与国家安全影响
  • 实用指南:【读书笔记】《苏东坡》
  • 10.18 CSP-S模拟34/2025多校CSP模拟赛6 改题记录
  • 做题技巧与结论证明
  • 卡车厂实习第三天
  • 『普及』浅谈图的基础
  • ozon定制尺寸和重量
  • CF 359D. Pair of Numbers
  • 2025多校CSP模拟赛6
  • Java基础——类型转换,变量、常亮、作用域,基本运算符
  • 洛谷 LGR-246 S 模拟赛
  • godot3D节点本身的偏转数值错误竟会导致空间移动穿模??!
  • Kafka面试精讲 Day 24:Spring Kafka构建实战
  • 重新安装trea cn
  • 题解:qoj7938 Graph Race
  • java中的初等函数
  • 【机器人】SG-Nav 分层思维链H-CoT | 在线分层3D场景图 | 目标导航 - 教程
  • 学习逆向的背景知识(自用)
  • 傅里叶变换及DCT点滴
  • 【未完待续】MkDocs 部署安装教程
  • 傅里叶变换点滴
  • How to Practice English Daily for 30 mins
  • [buuctf]jarvisoj_level3_x64
  • SpringBoot系列十三:SpringBoot面试常见问题
  • 2025 夹丝玻璃源头厂家最新推荐排行榜:解析防火 / 艺术 / 酒店等多场景厂商优势,助力精准选型
  • 2025 中空板源头厂家最新推荐排行榜揭晓:覆盖全产业链,老牌与新锐共筑品质标杆