Problem - B - Codeforces
思路:
将26个字母出现次数用mp[j]表示,j(0-26)表示字母
关键在于字母如何表示,还需要再练习这类题目
注意:
vector数组开时要设好长度,因为是2e6,会出现程序停止的情况,原因就在于数组访问超了
#include<bits/stdc++.h>
#define int long long
using namespace std;
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
const int N = 2e6 + 10;
vector<int> a(N);
map<int, int> mp;
vector<char> b(N);
signed main(){
IOS;
int t;
cin >> t;
while(t -- )
{
int n;
cin >> n;
for(int i = 0; i < n; i ++ ) cin >> a[i];
for(int i = 0; i < n; i ++ )
{
for(int j = 0; j < 26; j ++ )
{
if(a[i] == mp[j]) {
mp[j] ++;
b[i] = 'a' + j;
break;
}
}
cout << b[i];
}
mp.clear();
cout << endl;
}
return 0;
}