原题链接:

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. 掷骰子python代码_Python 使用matplotlib模块模拟掷骰子
  2. Facebook 开源 SlowFast:基于双帧速率分治轻量视频识别模型
  3. wordpress导航页采用分类目录排序
  4. CRM_OPPORT_TEXT_DETER_STANDARD
  5. java 远程怎么改bug_java struts2 远程执行任意java代码bug漏洞修复
  6. 上海GDD(谷歌开发者大会),第一天总结
  7. Otsu阈值分割详解
  8. springboot毕业设计 基于springboot旅游景区景点购票系统毕业设计设计与实现参考
  9. 所有图形得面积和周长公式
  10. android 手机锁 无服务器,安卓手机锁屏密码忘记了怎么办?adb解锁图文教程
  11. 关于win11系统下查看无线网络密码的方式
  12. 友情链接加nofollow_如何在WordPress中Nofollow所有外部链接
  13. torch.norm的理解
  14. html文档是哪个版本,HTML 简介, 版本和文档类型声明
  15. 大数据批量下载文件 代码
  16. ppt提示内存或系统资源不足_电脑使用一段时间后,提示“系统资源不足”,怎么办?...
  17. 爬取网站视频命令行工具you-get的安装及使用方法
  18. python提取网页表格信息_python 提取网页表格数据库数据库
  19. 激活层是每一层都有吗_济南最地道的5种美食,每一种都色香味俱全,来看看你都吃过吗?...
  20. TMS320C28x的中断

热门文章

  1. CSS实现文字下面波浪线
  2. 性能测试-工具篇:jmeter - Header管理器
  3. 数据库系统概论学习一
  4. 【毕业设计】stm32智能水杯设计与实现(恒温控制) - 单片机 物联网 嵌入式
  5. 视频化表达“吞噬”互联网,文本信息逐渐被替代?
  6. 《炬丰科技-半导体工艺》 硅蚀刻及其在太阳能电池制造过程中的应用
  7. 75道程序员逻辑思维面试题
  8. hive -e 和hive -f 的注意点 (//和////)
  9. 全球及中国PVD镀膜机行业发展现状与未来投资战略分析报告2022-2028年
  10. 软件测试人员需要懂这些网络知识点