#include <iostream>
#include <cstdio>
using namespace std;

char ch[300010];
int n,m;
int Cal(int x,char c)
{
	x-=1;
	if(c == '.')
	//点 
	{
		if(ch[x]=='.')
		{//点换点 
			ch[x] = c;
			return 0; 
		}
		else 
		{//点换字母 
			int rt = 0; 
			if(x-1>=0 && ch[x-1]=='.')
				rt += 1;
			if(x+1<n && ch[x+1]=='.')
				rt += 1;
			ch[x] = c;
			return rt;
		}
	}
	else if(c != '.')
	{//字母 
		
		if(ch[x]!='.')
		{//字母换字母无意义 
			ch[x] = c;
			return 0;
		} 
		else if(ch[x]=='.')
		{//字母换点  左边有点少1 右边有点再少1 
			int rt = 0;
			if(x-1>=0 && ch[x-1]=='.')
				rt -= 1;
			if(x+1<n && ch[x+1]=='.')
				rt -=1;
			ch[x] = c;
			return rt;
		} 
	}
}

int main()
{
	while(cin >>n >> m)
	{
		getchar();
		int count = 0;
		gets(ch);
		for(int i=0;i<n;i++)
		{
			if(ch[i]=='.'&&ch[i+1]=='.')
			{
				count +=1;
			}
		}
		//cout << count << endl;
		
		int x;
		char ct;
		for(int i=0;i<m;i++)
		{
			scanf("%d %c",&x,&ct);
			//printf("%d %c\n",x,ct);
			count += Cal(x,ct);
			cout << count << endl;
		}
		
	}
}
就是给你一个字符串,问你替换其中某个字符后,需要几次修改才没有连续的点点...