“玲珑杯”ACM比赛 Round #22 E 贪心,脑洞

时间:2023-03-08 16:27:16
1171 - 这个E大概是垃圾桶捡来的

Time Limit:2s Memory Limit:128MByte

Submissions:138Solved:45

DESCRIPTION
B君在做 CODE FESTIVAL 2017 qual B 遇到了这样的一道题目
于是B君决定出一个加强版
输入一个字符串,将他重新排列,使得重排之后的字符串的最小表示法,最大。
最小表示法是将字符串循环移动之后,字典序最小的那个。

https://en.wikipedia.org/wiki/Lexicographically_minimal_string_rotation

(其实并没有加强)

INPUT
第一行一个字符串s输入只有小写字母字符串长度<=200
OUTPUT
重排之后,最大的最小表示法。
SAMPLE INPUT
aabbccccdd
SAMPLE OUTPUT
adccbadccb
S
思路:感谢毕老师提供的思路   链接:http://www.ifrog.cc/acm/solution/30
代码:
#include <bits/stdc++.h>
using namespace std;
int main() {
string s,temp;
cin>>s;
multiset<string> st;
int len=s.length();
for(int i=0;i<len;++i) {
temp=s[i];
st.insert(temp);
}
temp="";
while(st.size()!=1) {
temp+=*st.begin();
multiset<string>::iterator it;
for(it=st.end();it==st.end();it--) {}
temp+=*it;
st.erase(it);
st.erase(st.begin());
st.insert(temp);
temp="";
}
cout<<*st.begin()<<endl;
return 0;
}