CF 787 E. Replace With the Previous, Minimize
原题链接:
https://codeforces.com/contest/1675/problem/E
题目大意:给你最多k次操作机会,对字符串某类小写字符进行减小操作,比如可以花费一次操作将所有的'c'改成'b'。求不超过k次操作字典序最小。
解题思路:字典序最小显然应让第一个字符变得最小,如可能变成字母a。如k比较小,不够变成a的话,那么尽可能减小第一个字符。如果k把第一个字符减小之后还有剩余,尝试减小第二个可变字母。
注意,如果第一个字符是f,那么当我们把f变成a时,字符串中所有小于f的如e,d,c也都会变成a。同理,如果如果第一个字符是f,我们先把f变成a,如果第二个字符如果是g,那么只要花费1次操作将g变成f,那么这个g最终也会变成字母a。
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
int t,n,k;
char v[30],s[200005];
int main()
{ios::sync_with_stdio(0),cin.tie(0);int i,j;cin>>t;s[0]='a';while(t--){cin>>n>>k>>s+1;char maxv=s[0];/**< 为了处理方便,把初始最大值设定为a */for(i=0;i<26;i++)v[i]=i+'a';/**< v存储每种小写字母变化后的值,初值为自身 */for(i=1; i<=n&&k>0; i++){if(s[i]>maxv) /**< 可以改变 */{if(s[i]-maxv<=k) /**< 机会够就变成a,读者可尝试将ifelse的两个分支整合在一起 */{k-=s[i]-maxv;for(j=s[i]-'a'; j>=0; j--)/**< 如果s[i]能变成a,那么所有比s[i]小的字母也能变成a */v[j]='a';}else/**< 机会k不够尽可能变小 */{for(j=s[i]-'a'; j>=s[i]-k-'a'; j--)v[j]=s[i]-k;k=0;}maxv=s[i];}}for(i=1; i<=n; i++)cout<<v[s[i]-'a'];cout<<endl;}return 0;
}
CF 787 E. Replace With the Previous, Minimize相关推荐
- E. Replace With the Previous, Minimize
题目连接:Problem - 1675E - Codeforces 理解题目:输入一个字符串,将此字符串中相同的字母同时进行递减,问k次递减后,此字符串的最小字典序(查字典的字母排列顺序)eg:cba ...
- Codeforces Round #787 (Div. 3) ABCDEF
文章目录 一.A. Food for Animals? 二.B - Make It Increasing 三.C - Detective Task 四.D - Vertical Paths 五.E - ...
- Codeforces Round #787 (Div. 3)
A. Food for Animals 题目链接:Problem - A - Codeforces 样例输入: 7 1 1 4 2 3 0 0 0 0 0 5 5 0 4 6 1 1 1 1 1 50 ...
- Codeforces Round #787 (Div. 3)补题
目录: 官网链接 E. Replace With the Previous, Minimize F. Vlad and Unfinished Business G. Sorting Pancakes ...
- 一行代码轻松搞定各种IE兼容问题,IE6,IE7,IE8,IE9,IE10
在网站开发中不免因为各种兼容问题苦恼,针对兼容问题,其实IE给出了解决方案Google也给出了解决方案百度也应用了这种方案去解决IE的兼容问题? 百度源代码如下: <!Doctype html& ...
- 搞定各种IE兼容问题,IE6,IE7,IE8,IE9,IE10 -
在网站开发中不免因为各种兼容问题苦恼,针对兼容问题,其实IE给出了解决方案Google也给出了解决方案百度也应用了这种方案去解决IE的兼容问题? 百度源代码如下: 1 <!Doctype htm ...
- VS Code:史上最全的VS Code快捷键+分门别类(中英文对照版)
VS Code:史上最全的VS Code快捷键+分门别类(中英文对照版) 目录 基础编辑 Basic editing 导航 Navigation 搜索和替换 Search and replace 多光 ...
- vscode快捷键大全
目录 基础编辑 Basic editing 导航 Navigation 搜索和替换 Search and replace 多光标和选择 Multi-cursor and selection 丰富的语言 ...
- 非常全的VS Code快捷键
按 Press 功能 Function Ctrl + Shift + P,F1 显示命令面板 Show Command Palette Ctrl + P 快速打开 Quick Open Ctrl + ...
最新文章
- 全职奶爸的一年深度学习之路:从零基础到成为研究科学家
- BinaryWriter和BinaryReader用法
- javac,使用-d .与省略-d的区别
- Hadoop HDFS的一些相关代码code
- Keepalived双机热备
- Linux下patch的制作和应用
- 深度学习为图片压缩算法赋能:节省55%带宽
- 华为matebook14会不会用鸿蒙,2020年用什么笔记本上网课?浅析华为MateBook 14 2020款...
- 解决 X: user not authorized to run the X server, aborting.
- Gitlab 服务器搭建,maven安装与jdk安装,linux下安装git
- 【数据结构笔记01】什么是数据结构
- 1018 锤子剪刀布 (20 分)—PAT (Basic Level) Practice (中文)
- 小米5s安装xpose 上
- 利用PS的磁性套索工具进行抠图
- 用python的Turtle库画一个笑脸
- 微信小程序开发:腾讯地图集成详细步骤
- Google地图开发初级篇
- 太平洋电信分享如何“构建敏捷网络,共筑网络安全防护带”
- ReleaseDC、DeleteDC(买二送一DeleteObject)简单解析
- 树莓派+MediaPipe+PCA9685+自制摄像机云台实现人脸跟踪移动