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;
}


posted @ 2017-03-10 17:59  see_you_later  阅读(230)  评论(0编辑  收藏  举报