『FLA - I』歌静河
字符串、贪心
测试点 1 \sim 3
观察发现先替换掉 #,再替换掉 # 得到的
测试点 4 \sim 6
由于只有一个串里有 #,操作顺序是唯一的,执行完
测试点 7 \sim 10
为了最小化字典序,应该尽量将 # 替换成 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;
}