首页 > 其他分享 >[ABC328D] Take ABC 题解

[ABC328D] Take ABC 题解

时间:2023-11-24 19:48:04浏览次数:34  
标签:ABC ABC328D 题解 long bk int st define

题目大意:

给你一个字符串 \(s\)。你要在其中找到多少个 ABC 的子串,例如 AABCBC 算两个,删掉中间的 ABC 后,前面的和后面的加起来也是一个 ABC,所以就算两个。

思路分析:

首先很容易写出暴力,把一个 ABC 提取出来后把后面的元素往前移,然后再重复操作,但是我们发现时间复杂度会卡成 \(O(n^2)\)。\(n\) 指 \(s\) 的长度。

于是我们想到用栈来维护,遍历这个字符串,把每一个字符串扔进栈里,设栈顶为 \(bk\),如果栈中 \(bk-2\) 的位置为 A,\(bk-1\) 的位置为 B,\(bk\) 的位置为 C,那么就是可以组成一个 ABC。这样遍历的时候每一次做一下判断,如果发现存在 ABC,那么就把这对应的栈中位置给删除了即可。

link

#include<bits/stdc++.h>
#define ll long long
#define ull unsigned long long
#define pii pair<int,int>
#define fir first
#define se second
#define endl '\n'
#define debug puts("AK IOI")
using namespace std;
const int N = 2E5+5;
char st[N];int bk,n;
string s;
int main(){
	cin >> s;
	n=s.size();
	s=' '+s;
	for(int i = 1;i <= n;i++){
		st[++bk]=s[i];
		if(bk >= 3 && st[bk-2]=='A' && st[bk-1]=='B' && st[bk]=='C'){
			bk-=3;
		}
	}
	for(int i = 1;i <= bk;i++) cout<<st[i];
	
	return 0;
}

标签:ABC,ABC328D,题解,long,bk,int,st,define
From: https://www.cnblogs.com/gsczl71/p/17854589.html

相关文章

  • [ABC329C] Count xxx 题解
    插曲因为本人看错了题面,买看到一个子串只包含一种字母,所以切完D和E才回来发现很简单。问题翻译给你一个长度为\(N\)的字符串\(S\),由小写英文字母组成。求\(S\)的非空子串中有多少个是一个字符的重复。在这里,作为字符串的两个子串是相等的,即使它们是以不同的方式得到......
  • [ABC329D] Election Quick Report 题解
    题目翻译有一场选举,要从\(N\)名候选人中选出一名获胜者,候选人编号为\(1,2,\ldots,N\),共有\(M\)张选票。每张选票正好投给一位候选人,其中\(i\)票投给了候选人\(A_i\)。选票将按照从第一张到最后一张的顺序进行统计,每张选票统计完毕后,将更新并显示当前的获胜者。得票......
  • AT_abc329_e [ABC329E] Stamp 题解
    题目翻译给你两个字符串:\(S\)由大写英文字母组成,长度为\(N\);\(T\)也由大写英文字母组成,长度为\(M\),小于\(N\)。有一个长度为\(N\)的字符串\(X\),它只由#字符组成。请判断是否有可能通过执行以下任意次数的操作使\(X\)与\(S\)匹配:在\(X\)中选择\(M\)个连续字符,并......
  • 以精确反馈促进学生编程逻辑和问题解决意识:一种基于两层测试的在线编程训练方法
    (PromotingStudents’ProgrammingLogicandProblem-SolvingAwarenessWithPrecisionFeedback:ATwo-TierTest-BasedOnlineProgrammingTrainingApproach)DOI:10.1177/07356331221087773一、摘要研究目的:培养学生的计算机编程技能已成为全球重要的教育问题。然而,学......
  • 洛谷 P4872 OIer们的东方梦 题解
    前言一个下午,一个晚上,一个早上,可以算是一天了吧,终于调出了这道题,纪念一下吧!!!食用更佳。这道题其实就是一道简简单单的BFS模(du)板(liu)题。说难不难,简单不简单,虽然没有难的算法,但是就是码量一百多行,比较难调。题目难度绿,思维难度橙,代码难度蓝。真是个绝世好题。题目意思就是一......
  • 洛谷P3161 [CQOI2012] 模拟工厂题解
    P3161[CQOI2012]模拟工厂题解。题目其实发现这是一道状压,发现这道题是一道数学题,其实就很简单了。对于每一次的订单我们可以设:\(time\)为距离下一个订单的时间。\(num\)为这个订单要生产的数量。\(x\)为生产能力。\(y\)的时间可以用来提高工厂的生产力。那我们就可以得......
  • Ubuntu20.04 安装后部分问题解决方案
    安装搜狗输入法搜狗官方有教程:https://shurufa.sogou.com/linux/guideUbuntu与Windows时间不一致的问题安装ntpdate:sudoapt-getinstallntpdate校准时间:sudontpdatetime.windows.com将时间更新到硬件上:sudohwclock--localtime--systohc单击任务栏图标使窗......
  • [ABC321G] Electric Circuit 状压DP
    用到了好多技巧的状压DP我们先统计总数然后除以m的阶乘就可以了设f[i]表示状态为i的集合造成的贡献数(也就是状态为i的集合不与集合外的点联通且这个集合联通块数是1的情况数)不与集合外的点联通的话只用考虑结合i之间连边,集合外那些点之间两边就可以啦这个集合联通块数是1......
  • [ARC117E] Zero-Sum Ranges 2题解
    题解前言个人认为官方题解写得最为详细、干净、清楚,如果有意向阅读外文版的题解的话,还是推荐去读一读:Editorial-AtCoderRegularContest117本文属于转载(?),有一些自己的思考过程,希望有帮助。题意有多少个长度为\(2N\)的序列\(A\)满足:序列\(A\)包含\(N\)个\(+1\)......
  • P9779_[HUSTFC 2023] 不定项选择题_题解
    #[rt](https://www.luogu.com.cn/problem/P9779)#题目#####有一道共n个选项的不定项选择题,它的答案至少包含一个选项,由于题目与选项的内容晦涩难懂,你打算通过尝试每一种可能的答案来通过这道题。#####初始时所有选项都没有被勾选,你可以执行任意次下述操作:-###勾选一个当前......