N - Remove Adjacent CodeForces - 1321C
题目大意:删除字符,当一个字符左边或者右边存在一个比它小“1”的字符那么就可以将这个字符删除,问最多能删除多少个字符
思路,:刚开始想的是,对于单调连续的字符,可以直接删除,比如,单点增的字符只保留前边的就行了,单调减的只保留后边的。。。然后知道不能删除为止。然后wa了一下午。。
正解是复杂度是O(26*n*n),并且用到了string 里的erase
补充:
string::erase 用法:
(1)erase(pos,n); 删除从pos开始的n个字符,比如erase(0,1)就是删除第一个字符
(2)erase(position);删除position处的一个字符(position是个string类型的迭代器)
(3)erase(s.begin()+c,s.begin()+c+t);删除从c开始向后查t个字符。
#include<bits/stdc++.h>
using namespace std;
const int inf=0x3f3f3f3f;
const int N=;
string s;
int n;
bool solve()//尝试删除一个字母
{
for(int j=;j>=;j--)
for(int i=;i<s.size();i++){
if(s[i]!='a'+j)
continue;
if(i>)
if(s[i-]=='a'+j-){
s.erase(i,);
return true;
}
if(i<s.size()-)
if(s[i+]=='a'+j-){
s.erase(i,);
return true;
}
}
return false;
}
int main()
{
scanf("%d",&n);
cin>>s;
int ans=;
while(solve())
ans++;
printf("%d\n",ans); }
N - Remove Adjacent CodeForces - 1321C的更多相关文章
- Codeforces 1321C Remove Adjacent
题意 给你一个字符串,字符\(s_i\)可以被伤处当且仅当\(s_{i-1}=s_i-1\)或\(s_{i+1}=s_i-1\).问最多能删几个字符. 解题思路 其实,有个很简单的做法就是从\(z\) ...
- Codeforces Round #625 (Div. 2, based on Technocup 2020 Final Round) C. Remove Adjacent(字符串,贪心,枚举)
题意: 给你一个由小写字母组成的字符串,若串中两个相邻元素字典序中也相邻,移除较大字母,问最多能移除多少个字母. 思路: 从大到小依次枚举. Tips: 注意下标的处理. 以小消大: #include ...
- [LC] 82. Remove Adjacent Repeated Characters IV
Repeatedly remove all adjacent, repeated characters in a given string from left to right. No adjacen ...
- Linux/shell: remove adjacent similar patterns
cat > temp004AA1abcAA2AA3abcAA4abcAA5AA6 awk 'BEGIN {pre=0; str="";} { if(NR==1){ i ...
- Codeforces Round #625 (Div. 2)
Contest Info Practice Link Solved A B C D E F 4/6 O O Ø Ø O 在比赛中通过 Ø 赛后通过 ! 尝试了但是失败了 - 没有尝试 Sol ...
- PatentTips - Fair scalable reader-writer mutual exclusion
BACKGROUND The present invention relates generally to multithreaded programming and, more specifical ...
- [Algo] 118. Array Deduplication IV
Given an unsorted integer array, remove adjacent duplicate elements repeatedly, from left to right. ...
- 【Virt.Contest】CF1321(div.2)
第一次打虚拟赛. CF 传送门 T1:Contest for Robots 统计 \(r[i]=1\) 且 \(b[i]=0\) 的位数 \(t1\) 和 \(r[i]=0\) 且 \(b[i]=1\ ...
- CodeForces Round #498 Div.3 A. Adjacent Replacements
http://codeforces.com/contest/1006/problem/A Mishka got an integer array aa of length nn as a birthd ...
随机推荐
- 《面试经典系列》- MySQL数据库存储引擎
一.MySQL有多少种存储引擎? 在MySQL5之后,支持的存储引擎有十多个,但是我们常用的就那么几种,而且,默认支持的也是 InnoDB. 通过命令:show engines \g,我们可以查看到当 ...
- 题解 P5835 【 USACO19DEC Meetings S】
前言 这道题目是道好题,想通了之后就可以把轻松这道题做出来. 正文 结论 先把一个结论写出来. 无论所有奶牛怎么走,它们的体重从左往右组成的序列是不会发生改变的. 这个结论简单地说明一下. 首先我们可 ...
- 面试刷题21:java并发工具中的队列有哪些?

将一个方法调用同一个方法主体连接到一起就称为"绑定"(Binding).若在程序运行以前执行绑定,就叫做"早期绑定".而Java中绑定的所有方法都采用后期绑定技 ...
- 力软敏捷框架 jfGrid 使用例子之一
百度了下关于力软敏捷框架 jfGrid的教程,基本没有,出来的全是jqGrid.好吧看来只能自己上手了 今天来讲讲列设置属性里数据格式化事件(formatter)的使用 常规的使用方式如上图所示. 先 ...
- c期末笔记(3)
参数于模运算 1.实参与形参易错点 实参与形参之间是值传递. 实参&形参 实参可以是:常量,表达式或者变量 形参只能是变量 指针和指针变量 1.指针的定义 指针的定义形式:int*p = &a ...
- ubuntu上安装lamp环境命令清单
#install configuration manager sudo apt-get install tasksel #install basic lamp stack sudo tasksel i ...