思路题 codeforces div2 C Replacement
来源:互联网 发布:设计家软件 编辑:程序博客网 时间:2024/06/10 09:12
Daniel has a string s, consisting of lowercase English letters and period signs (characters '.'). Let's define the operation of replacement as the following sequence of steps: find a substring ".." (two consecutive periods) in string s, of all occurrences of the substring let's choose the first one, and replace this substring with string ".". In other words, during the replacement operation, the first two consecutive periods are replaced by one. If string s contains no two consecutive periods, then nothing happens.
Let's define f(s) as the minimum number of operations of replacement to perform, so that the string does not have any two consecutive periods left.
You need to process m queries, the i-th results in that the character at position xi (1 ≤ xi ≤ n) of string s is assigned value ci. After each operation you have to calculate and output the value of f(s).
Help Daniel to process all queries.
The first line contains two integers n and m (1 ≤ n, m ≤ 300 000) the length of the string and the number of queries.
The second line contains string s, consisting of n lowercase English letters and period signs.
The following m lines contain the descriptions of queries. The i-th line contains integer xi and ci (1 ≤ xi ≤ n, ci — a lowercas English letter or a period sign), describing the query of assigning symbol ci to position xi.
Print m numbers, one per line, the i-th of these numbers must be equal to the value of f(s) after performing the i-th assignment.
10 3.b..bz....1 h3 c9 f
431
4 4.cc.2 .3 .2 a1 a
1311
Note to the first sample test (replaced periods are enclosed in square brackets).
The original string is ".b..bz....".
- after the first query f(hb..bz....) = 4 ("hb[..]bz...." → "hb.bz[..].." → "hb.bz[..]." → "hb.bz[..]" → "hb.bz.")
- after the second query f(hbс.bz....) = 3 ("hbс.bz[..].." → "hbс.bz[..]." → "hbс.bz[..]" → "hbс.bz.")
- after the third query f(hbс.bz..f.) = 1 ("hbс.bz[..]f." → "hbс.bz.f.")
Note to the second sample test.
The original string is ".cc.".
- after the first query: f(..c.) = 1 ("[..]c." → ".c.")
- after the second query: f(....) = 3 ("[..].." → "[..]." → "[..]" → ".")
- after the third query: f(.a..) = 1 (".a[..]" → ".a.")
- after the fourth query: f(aa..) = 1 ("aa[..]" → "aa.")
#include<cstdio>char s[333333];char j[3];int main(){ int i,n,m,t=0; scanf("%d%d%s",&n,&m,s+1); for(i=1; i<n; i++)t+=s[i]=='.'&&s[i+1]=='.'; while(m--) { scanf("%d%s",&i,j); t-=s[i-1]=='.'&&s[i]=='.'; t-=s[i]=='.'&&s[i+1]=='.'; s[i]=j[0]; t+=s[i-1]=='.'&&s[i]=='.'; t+=s[i]=='.'&&s[i+1]=='.'; printf("%d\n",t); }}
- 思路题 codeforces div2 C Replacement
- Codeforces 570C Replacement
- CodeForces-570C Replacement
- Codeforces 570C Replacement
- codeforces 260 div2 C题
- Codeforces 570C Replacement 暴力
- CodeForces 570C Replacement 统计
- 【套题】Codeforces#306(div2)[A-C]
- Codeforces Div2 2016.08.29 C题
- Codeforces Round #402 (Div2)C题
- codeforces #78 div2 C
- codeforces 148 div2 C
- codeforces #169 div2 C
- codeforces 170 div2 C
- codeforces 178div2 C
- Codeforces Round225 DIV2 C
- codeforces 256 div2 C
- Codeforces #263 Div2 C
- xml基础知识
- java去除重复的字符串和移除不想要的字符串
- 简单的加密解密算法
- 深入理解JavaScript系列(39):设计模式之适配器模式
- 导航控制器的基本概念
- 思路题 codeforces div2 C Replacement
- 深入理解JavaScript系列(40):设计模式之组合模式
- iOS项目开发实战——使用代码实现页面跳转
- Hibernate Hibernate配置信息+启动session工厂工具包
- c/c++常见关键字
- NOI2005 维修数列
- 九度OJ 题目1076:N的阶乘
- 算法题:矩阵旋转90度
- Java中常见概念