zoukankan      html  css  js  c++  java
  • 洛谷

    https://www.luogu.org/problemnew/show/P1012

    这道水题居然翻车了,还发现不了bug,服气了。并不是空字符一定比不空要好,要取决于替代它的字符的大小。所以还是直接比较两个字符串互相接后的字典序就好了。

    错误代码如下:

    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    
    string s[20];
    int n;
    
    struct cmp{
        bool operator()(string s1,string s2){
            int n1=s1.length();
            int n2=s2.length();
            int ml=max(s1.length(),s2.length());
            for(int i=0;i<ml;i++){
                if(i<n1&&i<n2&&s1[i]!=s2[i])
                    return s1[i]>s2[i];
                else{
                    if(i==n1)
                        return 1;
                    else if(i==n2)
                        return 0;
                }
            }
            return 0;
        }
    };
    
    int main(){
        cin>>n;
        for(int i=0;i<n;i++)
            cin>>s[i];
        sort(s,s+n,cmp());
        string ans;
        for(int i=0;i<n;i++)
            ans+=s[i];
        cout<<ans<<endl;
    }

    翻车的数据还是很简单的:

    6
    321 32 407 135 13 217

    好吧,正确的写法应该是:

    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    
    string s[20];
    int n;
    
    struct cmp{
        bool operator()(string s1,string s2){
            return s1+s2>s2+s1;
        }
    };
    
    int main(){
        cin>>n;
        for(int i=0;i<n;i++)
            cin>>s[i];
        sort(s,s+n,cmp());
        string ans;
        for(int i=0;i<n;i++)
            ans+=s[i];
        cout<<ans<<endl;
    }
  • 相关阅读:
    Widget Factory
    233 Matrix
    青蛙的约会
    Longge's problem
    密码解锁
    SQFREE
    GCD
    [WC2011]最大XOR和路径
    [HNOI2011]XOR和路径
    [ZJOI2010]排列计数
  • 原文地址:https://www.cnblogs.com/Yinku/p/10325402.html
Copyright © 2011-2022 走看看