其他分享
首页 > 其他分享> > (未完)Codeforces Round #798 (Div. 2) AB...

(未完)Codeforces Round #798 (Div. 2) AB...

作者:互联网

Codeforces Round #798 (Div. 2)

https://codeforces.com/contest/1689
菜鸟来补题了。。。还妹写完
AB过的有些出乎意料,毕竟我是乱构造的

A. Lex String

A要干啥来着,,不记得了,明天看看

#include <bits/stdc++.h>

using namespace std;

void solve () {
    int n, m, k;
    cin >> n >> m >> k;
    string s, t, ans;
    cin >> s >> t;

    sort (s.begin (), s.end ()), sort (t.begin (), t.end ());
    //cout << s << endl << t << endl;

    int cnt1 = 0, cnt2 = 0;
    for (int i = 0, j = 0; i < s.size () &&j < t.size (); ) {
        if (abs (cnt1 - cnt2) >= k) {
            if (cnt1 > cnt2)
                ans += t[j], j ++, cnt1 = 0, cnt2 ++;
            else
                ans += s[i], i ++, cnt1 ++, cnt2 = 0;
            continue;
        }

        if (s[i] > t[j])
            ans += t[j], j ++, cnt2 ++, cnt1 = 0;
        if (s[i] < t[j])
            ans += s[i], i ++, cnt1 ++, cnt2 = 0;

    }
    cout << ans << endl;
}

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

B. Mystic Permutation

直接从小到大排,不行就交换位置

#include <bits/stdc++.h>

using namespace std;
const int N = 1005;
int a[N], b[N];

void solve () {
    int n;
    cin >> n;
    for (int i = 1; i <= n; i ++)
        cin >> a[i], b[i] = i;
    if (n == 1) {
        cout << -1 << endl;
        return ;
    }
    for (int i = 1; i < n; i ++)
        if (a[i] == b[i])
            swap (b[i], b[i + 1]);
    if (b[n] == a[n])   swap (b[n], b[n - 1]);
    
    for (int i = 1; i <= n; i ++)
        cout << b[i] << ' ';
    cout << endl;

}

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

//构造
//每一个位置都要不一样且字典序最小
//感觉很爽,瞎构造的竟然过了

标签:...,AB,++,Codeforces,int,solve,cnt2,cnt1,ans
来源: https://www.cnblogs.com/CTing/p/16387418.html