1 solutions

  • 1
    @ 2025-12-28 15:09:25

    一眼就想起了 ACWING 上一道神秘的题目 实则这题就是个贪心,对于任意两个字符串,直接看哪个排前面收益更大哪个排前面就完事了,剩下就交给神秘的sort就得到了feimeist的代码

    #include <bits/stdc++.h>
    using namespace std;
    int n;
    string s[200005];
    long long yali(string s)//依旧yali
    {
        long long k=0,ans=0;
        for(int i=s.size()-1;i>=0;i--)
        {
            if(s[i]>='0'&&s[i]<='9')
            {
                k+=s[i]-'0';
            }
            else
            {
                ans+=k;
            }
        }
        return ans;
    }
    int p[200005];
    bool cmp(int a,int b)
    {
        string x,y;
        x=s[a];
        y=s[b];
        if(x==y||yali(x+y)==yali(y+x))
        {
            return a>b;
        }
        return yali(x+y)>yali(y+x);
    }
    int main()
    {
        cin >> n;
        for(int i=0;i<n;i++)
        {
            cin >> s[i];
            p[i]=i;
        }
        sort(p,p+n,cmp);
        string t="";
        for(int i=0;i<n;i++)
        {
            t+=s[p[i]];
        }
        cout << yali(t);
    }
    
    • 1

    Information

    ID
    356
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    10
    Tags
    (None)
    # Submissions
    2
    Accepted
    2
    Uploaded By