题解:AT_abc372_c [ABC372C] Count ABC Again

博客内食用更佳

乍一看好像是数据结构

我们结合题目所求内容考虑。对于每次修改,能对答案产生影响的最多只能是当前字符向前和向后延伸 2 个元素所构成的长为 5 的子串。

那么我们先 O(n) 计算出来初始答案。每次修改的时候,不妨先把 i2ii1i+1ii+2 这三个子串的贡献减去,然后直接修改元素,最后重新计算这三个子串的贡献即可。

对于贡献计算的话,因为下标边界的问题,我们可以写一个函数方便处理。如下:

bool ch(int x)
{
	if(x<=0||x+2>n)return 0;
	return s[x]=='A'&&s[x+1]=='B'&&s[x+2]=='C';
}

提交记录

posted @   Redamancy_Lydic  阅读(32)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示