Substring Inversion (Easy Version)

题目link

思路

Substring Inversion (Easy Version)_第1张图片

记录

如果在有序的map中, key是int,或者string,它们天然就能比较大小,本身的就是有序的。不用额外的操作。
按照键值升序排列

map<string, int, greater<string> > mp;

代码

nt n;
string s;


int num[550];
void solve(){
    cin >> n;
    cin >> s;
    int res = 0;
    mem(num,0);
    map<string,vector<int>,greater<string>> mp;
    forr(i,0,n-1)forr(j,i,n-1){
        string t = s.substr(i,j-i+1);
        mp[t].push_back(i);
    }

    for(auto [str,be]:mp){
        for(auto v:be){
            forr(i,v+1,n-1) res = (res +num[i])%mod;
        }
        for(auto v:be) num[v]++;
        
    }
    cout << res << endl;
}

signed main()
{
    int t;cin>>t;
    while(t--) solve();    
    return 0;
}

你可能感兴趣的:(题解,算法)