Codeforces570C 【简单标记】
题意:
给定一个长为n的字符串(包含小写字母和’.’),有m次操作
每次操作可以修改字符,并询问修改后有多少对相邻的’.’
思路:
标记。
#include<bits/stdc++.h> using namespace std; typedef long long LL; const int N=3e5+10; bool vis[N]; char s[N]; int n,m,len,ans,x; int main() { char y[5]; scanf("%d%d",&n,&m); scanf("%s",s); len=strlen(s); memset(vis,false,sizeof(vis)); ans=0; for(int i=0;i<n;i++) { if(s[i]=='.') vis[i]=true; if(i&&vis[i]&&vis[i-1]) ans++; } while(m--) { scanf("%d%s",&x,y); x--; if(y[0]=='.') { if(!vis[x]) { if((x-1)>=0&&vis[x-1]) ans++; if((x+1)<n&&vis[x+1]) ans++; vis[x]=true; } } else { if(vis[x]) { if((x-1)>=0&&vis[x-1]) ans--; if((x+1)<n&&vis[x+1]) ans--; vis[x]=false; } } printf("%d\n",ans); } return 0; }