Codeforces 570C 贪心
题目:http://codeforces.com/contest/570/problem/C
题意:给你一个字符串,由‘.’和小写字母组成。把两个相邻的‘.’替换成一个‘.’,算一次变换。现在给你一些个操作,操作内容是把某个位置的字符变成给定的 字符,求出每次操作后,需要多少次
变换才能把原串所有相邻的‘.’变成一个‘.’。注意,每次操作是累加的,即一次操作就会把原串替换一个字符。
分析:先求出原串的变换次数sum,然后每次询问的时候,直接看他的两边是否是".",如果是"."num++。因为是累加的,所以在每次循环过后需要更新字符串以及sum。
#include <cstdio>
#include <iostream>
#include <sstream>
#include <cmath>
#include <cstring>
#include <cstdlib>
#include <string>
#include <vector>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <algorithm>
using namespace std;
#define ll long long
#define _cle(m, a) memset(m, a, sizeof(m))
#define repu(i, a, b) for(int i = a; i < b; i++)
#define repd(i, a, b) for(int i = b; i >= a; i--)
#define sfi(n) scanf("%d", &n)
#define pfi(n) printf("%d\n", n)
#define N 100010
string s;
vector<int> p[N];
int main()
{
int n,m;
while(~scanf("%d%d",&n,&m))
{
cin>>s;
int flag = ,t,sum = ;
repu(i,,n)
{
if(s[i] == '.' && !flag)
{
flag = ;
t = i;
}
else if(flag && s[i] != '.')
{
sum += (i-t-);
flag = ;
}
}
if(flag)
sum += (n-t-);
//printf("%d\n",sum);
char p;
int num = sum,a;
repu(i,,m)
{
scanf("%d %c",&a,&p);
if(p != '.')
{
if(s[a-] != '.')
num = sum;
else
{
if(a- >= && s[a-] == '.')
num--;
if(s[a] == '.' && a < n)
num--;
}
s[a-] = p;
sum = num;
}
else
{
if(s[a-] == '.')
num = sum;
else
{
if(a- >= && s[a-] == '.')
num++;
if(s[a] == '.' && a < n)
num++;
}
s[a-] = p;
sum = num;
}
printf("%d\n",num);
}
}
return ;
}
Codeforces 570C 贪心的更多相关文章
- CodeForces - 893D 贪心
http://codeforces.com/problemset/problem/893/D 题意 Recenlty Luba有一张信用卡可用,一开始金额为0,每天早上可以去充任意数量的钱.到了晚上, ...
- Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals) Problem D (Codeforces 831D) - 贪心 - 二分答案 - 动态规划
There are n people and k keys on a straight line. Every person wants to get to the office which is l ...
- Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals) Problem D (Codeforces 828D) - 贪心
Arkady needs your help again! This time he decided to build his own high-speed Internet exchange poi ...
- CodeForces - 93B(贪心+vector<pair<int,double> >+double 的精度操作
题目链接:http://codeforces.com/problemset/problem/93/B B. End of Exams time limit per test 1 second memo ...
- C - Ordering Pizza CodeForces - 867C 贪心 经典
C - Ordering Pizza CodeForces - 867C C - Ordering Pizza 这个是最难的,一个贪心,很经典,但是我不会,早训结束看了题解才知道怎么贪心的. 这个是先 ...
- Codeforces 732e [贪心][stl乱搞]
/* 不要低头,不要放弃,不要气馁,不要慌张 题意: 给n个插座,m个电脑.每个插座都有一个电压,每个电脑都有需求电压. 每个插座可以接若干变压器,每个变压器可以使得电压变为x/2上取整. 有无限个变 ...
- Codeforces 721D [贪心]
/* 不要低头,不要放弃,不要气馁,不要慌张. 题意: 给一列数a,可以进行k次操作,每次操作可以选取任意一个数加x或者减x,x是固定的数.求如何才能使得这个数列所有数乘积最小. 思路: 贪心...讨 ...
- CodeForces - 424B (贪心算法)
Megacity Time Limit: 2000MS Memory Limit: 262144KB 64bit IO Format: %I64d & %I64u Submit Sta ...
- CodeForces 489C (贪心) Given Length and Sum of Digits...
题意: 找出m位且各个数位数字之和为s的最大和最小整数,不包括前导0(比如说003是非法的),但0是可以的. 分析: 这题是用贪心来做的,同样是m位数,前面的数字越大这个数就越大. 所以写一个can( ...
随机推荐
- Oracle 数据库特殊查询总结
1. 查询本节点及本节点以下的所有节点: select * from table1 c start with c.p_id='0000000' connect by prior c.id=c.p_id ...
- Wpf之Xaml属性值和特性值(一)
其实我一直很好奇在xaml中,通过Attribute=Value这种方式可以进行对元素的描述, 例如: <Rectangle Name=” rectangle” Fill=”Blue”/> ...
- thinkjs中自定义sql语句
一直以为在使用thinkjs时,只能是它自带的sql语句查询,当遇到类似于这样的sql语句时,却不知道这该怎样来写程序,殊不知原来thinkjs可以执行自定义sql语句 SELECT * from a ...
- git使用和理解之一(不含分支)
0.前言 Workspace:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) Remote:远程仓库 工作区和暂存区: 我们写代码的地方就是工作区,代码写完后, ...
- asp.net js获取控件ID
ClientID是由ASP.Net生成的服务器控件得客户端标识符,当这个控件生成到客户端页面的时候,在客户端代码访问该控件时就需要通过ClientID来访问. 以文本框为例: 一.未使用母版页 js可 ...
- 二:基础概述netty
如果不了解netty的,可以百度下,netty社区现在也比较活跃. 现在所谓的大数据,flume,storm等底层都是netty. netty的性能模型: io模型---->异步非阻塞io ...
- Java 第二次作业
package javazuoye;import javax.swing.*; import java.awt.*;import java.awt.event.*;public class dengl ...
- μC/OS-Ⅲ系统的中断管理
一.典型的μC/OS-Ⅲ中断服务程序解析 μC/OS-Ⅲ系统中典型有内核参与中断服务程序示例如下: MyISR: ...
- Thinkphp上传文件
//1.文件上传Onethink使用$uploads->upload()方法会出现bug,使用$uploads->uploadOne()方法 $config = array( 'maxSi ...
- wordpress 获取特色图片url方法
制作主题是需要获取特色图片,直接获取到url能更好的编辑css样式 <?php $large_image_url = wp_get_attachment_image_src( get_post_ ...