题解:P11279 Abstract String Basic
前言
简单贡献统计题。
周六的时候还在上课,语文课上拿着同学老年机看题并口胡。另外,语文老师是年级主任。
思路
将题目翻译成中文:给一个字符串
容易发现每个
假设已知
接着想怎样快速求出
预处理一下,开一个桶
最后我们就可以
然后对于每一个
时间复杂度为
代码
#include<bits/stdc++.h>
using namespace std;
int n;
string s;
int cnt[30];
int g(char c,int p){//求贡献
return n-cnt[c-'a']-(s[p]!=c);
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>n>>s;
for(int i=0;i<n;i++)cnt[s[i]-'a']++;//预处理
for(int i=0;i<n;i++){
char max_c='z';//随便初始化一个字母,初始化成啥都行
for(char c='a';c<'z';c++)//枚举放哪个字母
if(g(c,i)>g(max_c,i))max_c=c;
cout<<max_c;
}
return 0;
}