2018.07.20 atcoder Largest Smallest Cyclic Shift(貪心)
阿新 • • 發佈:2019-01-24
傳送門
題意:給你x個a,y個b,z個c,顯然這些字元可以拼成若干字串,然後求這些字串中最小表示法表示出來的最大的那一個。
解法:貪心思想,用multiset維護現在拼成的字串,每次取一個最小的和一個最大的拼在一起,最後剩下的就是答案。
程式碼如下:
#include<bits/stdc++.h>
using namespace std;
int a,b,c;
multiset<string>s;
int main(){
scanf("%d%d%d",&a,&b,&c);
for(int i=1;i<=a;++i)s.insert("a" );
for(int i=1;i<=b;++i)s.insert("b");
for(int i=1;i<=c;++i)s.insert("c");
while(s.size()>1){
string ss=*s.begin()+*--s.end();
s.erase(s.begin());
s.erase(--s.end());
s.insert(ss);
}
cout<<*s.begin();
return 0;
}