• 贪心/字符串好题


    http://www.ifrog.cc/acm/problem/1171

    题意:给定一个字符串,重排列该字符串中的字符,使得:1.该字符串为最小表示法 2.该字符串的字典序尽可能大。

    题解:

    E
    Atcoder上的那个题的做法,可以DP……
    但是比赛中,不少人想出了一个非常简介的贪心做法。

    将所有字母作为一个字母的字符串放进一个multiset,每次取出其中第一个字符串和最后一个字符串,将他们连接放回multiset

    最后剩下一个字符串便是答案。

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int main() {
     4     multiset<string> se;
     5     string s;
     6     cin >> s;
     7     for(char c: s) {
     8         stringstream st;
     9         st << c;
    10         se.insert(st.str());
    11     }
    12     while(se.size() > 1) {
    13         string a = *se.begin(), b = *se.rbegin();
    14         se.erase(se.begin());
    15         se.erase(--se.end());
    16         se.insert(a+b);
    17     }
    18     cout << *se.begin() << endl;
    19     return 0;
    20 }
    View Code

    10.29,CCPC秦皇岛站,恭祝茅菊苣队再次摘金,恭祝我锐夺银,恭祝NEU大二神牛摘金!我好菜啊.jpg

  • 相关阅读:
    node03
    node02
    node01
    Vue-router重修02
    Vue-router重修01
    Vue重修02
    VUE重修01
    利用表达式目录树进行实体映射
    C#托管堆和垃圾回收
    C# 异步锁
  • 原文地址:https://www.cnblogs.com/dirge/p/7751101.html
Copyright © 2020-2023  润新知