题意:给你x个a,y个b,z个c,显然这些字符可以拼成若干字符串,然后求这些字符串中最小表示法表示出来的最大的那一个。
解法:贪心思想,用multiset维护现在拼成的字串,每次取一个最小的和一个最大的拼在一起,最后剩下的就是答案。
代码如下:
#includeusing namespace std;int a,b,c;multiset 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;}