“玲珑杯”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;
}




posted @ 2017-11-03 01:43  lemonsbiscuit  阅读(165)  评论(0编辑  收藏  举报