1 条题解

  • 2
    @ 2025-12-11 21:13:12

    分析所有情况即可,注意判断是否越界

    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
    	ios::sync_with_stdio(0);
    	cin.tie(0);cout.tie(0);
    	int n,q;string s;cin>>n>>q>>s;
    	s=" "+s;int ans=0;
    	for(int i=1;i<=n-2;i++)
    		if(s[i]=='A'&&s[i+1]=='B'&&s[i+2]=='C')
    			ans++;
    	while(q--)
    	{
    		int x;char c;
    		cin>>x>>c;
    		if(x<=n-2&&s[x]=='A'&&s[x+1]=='B'&&s[x+2]=='C'&&c!='A')ans--;
    		if(x>1&&s[x]=='B'&&s[x-1]=='A'&&s[x+1]=='C'&&c!='B')ans--;
    		if(x>2&&s[x]=='C'&&s[x-1]=='B'&&s[x-2]=='A'&&c!='C')ans--;
    		if(x<=n-2&&c=='A'&&s[x+1]=='B'&&s[x+2]=='C'&&s[x]!='A')ans++;
    		if(x>1&&c=='B'&&s[x-1]=='A'&&s[x+1]=='C'&&s[x]!='B')ans++;
    		if(x>2&&c=='C'&&s[x-1]=='B'&&s[x-2]=='A'&&s[x]!='C')ans++;
    		s[x]=c;cout<<ans<<'\n';
    	}
    	return 0;
    }
    
    • 1

    信息

    ID
    7945
    时间
    2000ms
    内存
    1024MiB
    难度
    6
    标签
    递交数
    22
    已通过
    11
    上传者