Codeforces Round #455 (Div. 2) D题(花了一个早自习补了昨晚的一道模拟QAQ)
D. Colorful Points
You are given a set of points on a straight line. Each point has a color assigned to it. For point a, its neighbors are the points which don't have any other points between them and a. Each point has at most two neighbors - one from the left and one from the right.
You perform a sequence of operations on this set of points. In one operation, you delete all points which have a neighbor point of a different color than the point itself. Points are deleted simultaneously, i.e. first you decide which points have to be deleted and then delete them. After that you can perform the next operation etc. If an operation would not delete any points, you can't perform it.
How many operations will you need to perform until the next operation does not have any points to delete?
Input
Input contains a single string of lowercase English letters 'a'-'z'. The letters give the points' colors in the order in which they are arranged on the line: the first letter gives the color of the leftmost point, the second gives the color of the second point from the left etc.
The number of the points is between 1 and 106.
Output
Output one line containing an integer - the number of operations which can be performed on the given set of points until there are no more points to delete.
Input
aabb
Output
Input
aabcaa
Output
思路:模拟一下
AC代码:
#include<bits/stdc++.h> using namespace std;
vector< pair<int,int> > v;
int main(){
string str;
cin>>str;
int num=;
int flag=;
for(int i=;i<=str.size();i++){
if(str[i]!=str[i+]&&(i+)<str.size()){
flag=;
}
if(str[i]!=str[i+]){
v.push_back(make_pair(str[i]-'a',num));
num=;
}else{
num++;
}
}
if(flag){
printf("");
return ;
}
/*vector<pair<int,int> > ::iterator it;
for(it=v.begin();it!=v.end();it++){
cout<<(*it).first<<" "<<(*it).second<<endl;
}
*/
int ans=;//aabcaa while(){
vector<pair<int,int> > ::iterator it;
for(it=v.begin();it!=v.end();it++){
if(it==v.begin()||it==(v.end()-)){
(*it).second--;
continue;
}else{
(*it).second-=;
}
}
vector<pair<int,int> > ::iterator xit;
/*for(xit=v.begin();xit!=v.end();xit++){
cout<<(*xit).first<<" "<<(*xit).second<<endl;
}
*/
vector< pair<int,int> > temp;
vector<pair<int,int> > ::iterator itt;
for(itt=v.begin();itt!=(v.end());itt++){
if((*itt).second>){
if(temp.size()==){
temp.push_back(make_pair((*itt).first,(*itt).second));
}else{
vector<pair<int,int> > ::iterator t=temp.end()-;
if((*itt).first==(*t).first){
(*t).second+=(*itt).second;
}else{
temp.push_back(make_pair((*itt).first,(*itt).second));
}
}
}
}
/*vector<pair<int,int> > ::iterator flag=temp.begin(); cout<<temp.size()<<endl;
for(;flag!=temp.end();flag++){
cout<<(*flag).first<<" "<<(*flag).second<<endl;
}
*/
ans++;
if(temp.size()<=){
break;
}else{
v=temp;
} }
cout<<ans<<endl;
return ;
} /* aabbaaa */
Codeforces Round #455 (Div. 2) D题(花了一个早自习补了昨晚的一道模拟QAQ)的更多相关文章
- Codeforces Round #378 (Div. 2) D题(data structure)解题报告
题目地址 先简单的总结一下这次CF,前两道题非常的水,可是第一题又是因为自己想的不够周到而被Hack了一次(或许也应该感谢这个hack我的人,使我没有最后在赛后测试中WA).做到C题时看到题目情况非常 ...
- Codeforces Round #455 (Div. 2)
Codeforces Round #455 (Div. 2) A. Generate Login 题目描述:给出两个字符串,分别取字符串的某个前缀,使得两个前缀连起来的字符串的字典序在所有方案中最小, ...
- Codeforces Round #612 (Div. 2) 前四题题解
这场比赛的出题人挺有意思,全部magic成了青色. 还有题目中的图片特别有趣. 晚上没打,开virtual contest打的,就会前三道,我太菜了. 最后看着题解补了第四道. 比赛传送门 A. An ...
- Codeforces Round #713 (Div. 3)AB题
Codeforces Round #713 (Div. 3) Editorial 记录一下自己写的前二题本人比较菜 A. Spy Detected! You are given an array a ...
- Codeforces Round #552 (Div. 3) A题
题目网址:http://codeforces.com/contest/1154/problem/ 题目意思:就是给你四个数,这四个数是a+b,a+c,b+c,a+b+c,次序未知要反求出a,b,c,d ...
- Codeforces Round #267 (Div. 2) C. George and Job(DP)补题
Codeforces Round #267 (Div. 2) C. George and Job题目链接请点击~ The new ITone 6 has been released recently ...
- Codeforces Round #425 (Div. 2))——A题&&B题&&D题
A. Sasha and Sticks 题目链接:http://codeforces.com/contest/832/problem/A 题目意思:n个棍,双方每次取k个,取得多次数的人获胜,Sash ...
- Codeforces Round #579 (Div. 3) 套题 题解
A. Circle of Students 题目:https://codeforces.com/contest/1203/problem/A 题意:一堆人坐成一个环,问能否按逆时针或者顺时针 ...
- Codeforces Round #426 (Div. 2)A题&&B题&&C题
A. The Useless Toy:http://codeforces.com/contest/834/problem/A 题目意思:给你两个字符,还有一个n,问你旋转n次以后从字符a变成b,是顺时 ...
随机推荐
- Thinking In Java 4th Chap2 一切都是对象
对基本数据类型的初始化有二: 1.String s="asdf"; 2.String s=new String("asdf"); 可能的存储区域: 寄存器(不可 ...
- Python【函数使用技巧】
写成“子函数+主函数”的代码结构,也是因为每个不同的功能封装在单独的函数代码中,方便后续修改.增删 import math # 变量key代表循环运行程序的开关 key = 1 # 采集信息的函数 d ...
- 【Trie】Secret Message 秘密信息
[题目链接]: https://loj.ac/problem/10054 [题意] 我认为这个题目最难的是题意: 其实分了两种情况: 1.如果当前文本串匹配不完,那么答案的是:匹配过程中遇到的模式串结 ...
- NIPS2018最佳论文解读:Neural Ordinary Differential Equations
NIPS2018最佳论文解读:Neural Ordinary Differential Equations 雷锋网2019-01-10 23:32 雷锋网 AI 科技评论按,不久前,NeurI ...
- 怎样查看或修改元素节点的id属性
使用 el.id; el表示获取到的元素节点, 如下所示: // HTML 代码 // <div id="app" class="c1">hello ...
- python selenium2 模拟点击+拖动 测试对象 58同城验证码
#!/usr/bin/python # -*- coding: UTF-8 -*- # @Time : 2019/12/5 17:30 # @Author : shenghao/10347899@qq ...
- 在QT中添加LIB的方法
注意:-L后面跟着的目录不能用空格,否则会出现读不到的情况. 例如win32下添加D:\app\my.lib 就 pro文件中 LIBS += -LD:\app\debug\ -lmy
- 1 java 笔记
第一java的版本: J2ME主要用于移动设备和信息家电 J2SE整个Java技术的核心 J2EE java技术应用最广泛的部分,主要应用与企业的开发 第二:基于java语言的开源框架 struts ...
- 如何准备Java的高级技术面试
一. 换位思考下,如果你面试官,你会怎么做 只能通过简历和面试来衡量,别无他法.如果某位大牛确认能力很行,但面试时无法充分地自证能力,那对不起了,过不了,现实就这样. 如果面试官由于能力不行,招进来一 ...
- es string 分词完整示例
"products_name_en": { "type": "string", //字符串类型 ...