CodeForces 1935A Entertainment in MAC

题目链接:Entertainment in MAC



思路

       当当前操作次数n为偶数时,若原字符串大于反转字符串则可以将原字符串反转n - 2次,则得到的还是原字符串,此时反转一次,并将其再次反转的字符串加到反转字符串的末尾,此时得到词典最小的字符串,源字符串小于反转字符串时,直接将原字符串反转n次得到词典最小的字符串。
       当当前操作次数为奇数时,若原字符串大于反转字符串,则将字符串反转n次,得到原串的反转字符串,即为词典最小的字符串,若原字符串小于反转字符串,则反转n - 1次,再将
当前字符串反转加到当前字符串末尾得到词典最小的字符串。


代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N = 1e5 + 10;


void solve() {
    ll n;
    string s;
    cin >> n >> s;
    int l = 0, len = s.size();
    while (s[l] == s[len - 1 - l] && l < len / 2) {
        l++;
    }
    if (s[l] > s[len - l - 1]) {
        if (n % 2) {
            reverse(s.begin(), s.end());
        }
        else {
            string auxious = s;
            reverse(s.begin(), s.end());
            s = s + auxious;
        }
    }
    else if (s[l] < s[len - 1 - l]){
        if (n % 2) {
            string auxious = s;
            reverse(s.begin(), s.end());
            s = auxious + s;
        }
    }
    cout << s << endl;
}
int main(){
    int t;
    cin >> t;
    while (t--) {
        solve();
    }
    return 0;
}

posted @ 2024-06-16 13:44  薛定谔的AC  阅读(3)  评论(0编辑  收藏  举报