1 条题解
-
0
自动搬运
来自洛谷,原作者为

ScaredQiu
Life Still Left In Me搬运于
2025-08-24 23:01:42,当前版本为作者最后更新于2024-02-25 22:40:07,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
字符串、贪心
测试点
观察发现先替换掉 中所有
#,再替换掉 中所有#得到的 字典序最小。测试点
由于只有一个串里有
#,操作顺序是唯一的,执行完 次操作后输出 即可。测试点
为了最小化字典序,应该尽量将 中靠前的
#替换成a。依次考虑每个#,假设当前操作中用来替换#的字符是y,如果 中剩余的#的数量能够进行两次操作,那么就对 进行两次操作,再使用a替换 中的#。只考虑
a的原因是如果能通过对 进行若干次操作将当前字符换成b,那么可以通过减少一次操作将当前字符变成a,这样不仅会让 的字典序更小,还留出了更多的操作,显然是不劣的。对于 中的每个
#,考虑是否能通过对 操作将用来替换的字符换成a,如果能则进行操作。时间复杂度 。
#include<bits/stdc++.h> using namespace std; int n,m,cnt; string a,b; char s; int main(){ ios::sync_with_stdio(0); cin>>n>>m>>a>>b,s='a'; for(int i=0;i<=n-1;i++) if(b[i]=='#') cnt++; for(int i=0;i<=n-1;i++) if(a[i]=='#'){ if(s!='a'&&cnt>='z'-s+1) cnt-='z'-s+1,s='a'; a[i]=s,s=s=='z' ? 'a':s+1; } cout<<a<<'\n'; return 0; }
- 1
信息
- ID
- 9838
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者