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 + ...
最新文章
- 掷骰子python代码_Python 使用matplotlib模块模拟掷骰子
- Facebook 开源 SlowFast:基于双帧速率分治轻量视频识别模型
- wordpress导航页采用分类目录排序
- CRM_OPPORT_TEXT_DETER_STANDARD
- java 远程怎么改bug_java struts2 远程执行任意java代码bug漏洞修复
- 上海GDD(谷歌开发者大会),第一天总结
- Otsu阈值分割详解
- springboot毕业设计 基于springboot旅游景区景点购票系统毕业设计设计与实现参考
- 所有图形得面积和周长公式
- android 手机锁 无服务器,安卓手机锁屏密码忘记了怎么办?adb解锁图文教程
- 关于win11系统下查看无线网络密码的方式
- 友情链接加nofollow_如何在WordPress中Nofollow所有外部链接
- torch.norm的理解
- html文档是哪个版本,HTML 简介, 版本和文档类型声明
- 大数据批量下载文件 代码
- ppt提示内存或系统资源不足_电脑使用一段时间后,提示“系统资源不足”,怎么办?...
- 爬取网站视频命令行工具you-get的安装及使用方法
- python提取网页表格信息_python 提取网页表格数据库数据库
- 激活层是每一层都有吗_济南最地道的5种美食,每一种都色香味俱全,来看看你都吃过吗?...
- TMS320C28x的中断
热门文章
- CSS实现文字下面波浪线
- 性能测试-工具篇:jmeter - Header管理器
- 数据库系统概论学习一
- 【毕业设计】stm32智能水杯设计与实现(恒温控制) - 单片机 物联网 嵌入式
- 视频化表达“吞噬”互联网,文本信息逐渐被替代?
- 《炬丰科技-半导体工艺》 硅蚀刻及其在太阳能电池制造过程中的应用
- 75道程序员逻辑思维面试题
- hive -e 和hive -f 的注意点 (//和////)
- 全球及中国PVD镀膜机行业发展现状与未来投资战略分析报告2022-2028年
- 软件测试人员需要懂这些网络知识点