原题链接:

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相关推荐

  1. E. Replace With the Previous, Minimize

    题目连接:Problem - 1675E - Codeforces 理解题目:输入一个字符串,将此字符串中相同的字母同时进行递减,问k次递减后,此字符串的最小字典序(查字典的字母排列顺序)eg:cba ...

  2. Codeforces Round #787 (Div. 3) ABCDEF

    文章目录 一.A. Food for Animals? 二.B - Make It Increasing 三.C - Detective Task 四.D - Vertical Paths 五.E - ...

  3. 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 ...

  4. Codeforces Round #787 (Div. 3)补题

    目录: 官网链接 E. Replace With the Previous, Minimize F. Vlad and Unfinished Business G. Sorting Pancakes ...

  5. 一行代码轻松搞定各种IE兼容问题,IE6,IE7,IE8,IE9,IE10

    在网站开发中不免因为各种兼容问题苦恼,针对兼容问题,其实IE给出了解决方案Google也给出了解决方案百度也应用了这种方案去解决IE的兼容问题? 百度源代码如下: <!Doctype html& ...

  6. 搞定各种IE兼容问题,IE6,IE7,IE8,IE9,IE10 -

    在网站开发中不免因为各种兼容问题苦恼,针对兼容问题,其实IE给出了解决方案Google也给出了解决方案百度也应用了这种方案去解决IE的兼容问题? 百度源代码如下: 1 <!Doctype htm ...

  7. VS Code:史上最全的VS Code快捷键+分门别类(中英文对照版)

    VS Code:史上最全的VS Code快捷键+分门别类(中英文对照版) 目录 基础编辑 Basic editing 导航 Navigation 搜索和替换 Search and replace 多光 ...

  8. vscode快捷键大全

    目录 基础编辑 Basic editing 导航 Navigation 搜索和替换 Search and replace 多光标和选择 Multi-cursor and selection 丰富的语言 ...

  9. 非常全的VS Code快捷键

    按 Press 功能 Function Ctrl + Shift + P,F1 显示命令面板 Show Command Palette Ctrl + P 快速打开 Quick Open Ctrl + ...

最新文章

  1. 全职奶爸的一年深度学习之路:从零基础到成为研究科学家
  2. BinaryWriter和BinaryReader用法
  3. javac,使用-d .与省略-d的区别
  4. Hadoop HDFS的一些相关代码code
  5. Keepalived双机热备
  6. Linux下patch的制作和应用
  7. 深度学习为图片压缩算法赋能:节省55%带宽
  8. 华为matebook14会不会用鸿蒙,2020年用什么笔记本上网课?浅析华为MateBook 14 2020款...
  9. 解决 X: user not authorized to run the X server, aborting.
  10. Gitlab 服务器搭建,maven安装与jdk安装,linux下安装git
  11. 【数据结构笔记01】什么是数据结构
  12. 1018 锤子剪刀布 (20 分)—PAT (Basic Level) Practice (中文)
  13. 小米5s安装xpose 上
  14. 利用PS的磁性套索工具进行抠图
  15. 用python的Turtle库画一个笑脸
  16. 微信小程序开发:腾讯地图集成详细步骤
  17. Google地图开发初级篇
  18. 太平洋电信分享如何“构建敏捷网络,共筑网络安全防护带”
  19. ReleaseDC、DeleteDC(买二送一DeleteObject)简单解析
  20. 树莓派+MediaPipe+PCA9685+自制摄像机云台实现人脸跟踪移动

热门文章

  1. 远程桌面计算机断网,win10系统远程桌面连接一会自动断开的详细技巧
  2. 多合一身份证读卡器JKL-HS300安装说明
  3. vis教程(加动画、加点击事件)
  4. 谷歌回归中国又一招:在深圳开设办事处,推出Cloud AutoML里程碑产品
  5. postgresql的时间处理函数,时间格式化函数
  6. GIS十问之三:公司要求工作经验,应届生怎么办?
  7. C++:组合数问题--买水果
  8. 小试牛刀---用python实现超市买水果
  9. 伦敦与北京奥运开幕式戏说
  10. MathType到期后的解决方法