“玲珑杯”ACM比赛 Round #22 E 贪心,脑洞
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; }