• Codeforces Round #715 (Div. 2)


    Codeforces Round #715 (Div. 2)

    A - Average Height

    int main() {
        IOS;
        for (cin >> _; _; --_) {
            cin >> n; VI a[2];
            rep (i, 1, n) cin >> m, a[m & 1].pb(m);
            if (a[0].size() < a[1].size()) swap(a[1], a[0]);
            for (auto &i : a[0]) cout << i << ' ';
            for (auto &i : a[1]) cout << i << ' '; cout << '
    ';
        }
        return 0;
    }
    

    B - TMT Document

    int main() {
        IOS;
        for (cin >> _; _; --_) {
            cin >> n >> s + 1; int x = 0, y = 0, z = 0;
            rep (i, 1, n) {
                if (s[i] == 'T') {
                    if (y) --y, ++z;
                    else ++x;
                } else {
                    if (x) --x, ++y;
                    else --z, y += 2;
                }
                if (z < 0) break;
            }
            cout << (z >= 0 && x == 0 && y == 0 ? "YES
    " : "NO
    ");
        }
        return 0;
    }
    

    C - The Sports Festival

    经典的区间dp

    ll f[N][N];
     
    int main() {
        IOS; cin >> n; memset(f, 0x3f, sizeof f);
        rep (i, 1, n) cin >> a[i], f[i][i] = 0; sort(a + 1, a + 1 + n);
        rep (l, 2, n) rep (i, 1, n - l + 1)
            f[i][i + l - 1] = min(f[i][i + l - 2], f[i + 1][i + l - 1]) + a[i + l - 1] - a[i];
        cout << f[1][n];
        return 0;
    }
    

    D - Binary Literature

    让某两个串公用(n)(0) or (1) 即可

    pair<int, string> a[3];
     
    int main() {
        IOS;
        for (cin >> _; _; --_) {
            cin >> n >> a[0].se >> a[1].se >> a[2].se;
            a[0].fi = a[1].fi = a[2].fi = 0;
            rep (i, 1, n * 2) rep (j, 0, 2) a[j].fi += a[j].se[i] == '1';
            sort(a, a + 3, [](pair<int, string>& a, pair<int, string>& b) { return a.fi < b.fi; });
            char c = '1'; string t;
            if (a[1].fi < n) swap(a[0], a[2]), c = '0';
            int i, j;
            for (i = 0, j = 0; max(i, j) < 2 * n; t += c, ++i, ++j) {
                while (i < a[1].se.size() && a[1].se[i] != c) t += a[1].se[i++];
                while (j < a[2].se.size() && a[2].se[j] != c) t += a[2].se[j++];
            }
            while (i < 2 * n) t += a[1].se[i++];
            while (j < 2 * n) t += a[2].se[j++];
            while (t.size() < 3 * n) t += c;
            if (t.size() > 3 * n) t.pop_back();
            cout << t << '
    ';
        }
        return 0;
    }
    

    E - Almost Sorted

    (a(n))表示长度为(n)的序列有几种排列

    显然(a(0) = a(1) = 1)

    注意到, 我们只能反转连续的一段, 毕竟要约束(a_i + 1 leqslant a_{i + 1})

    (a(n) = sum_i^{n - 1} a(i))(a(n) = 2^n)

    爆精度? (k <= 1e18) 求道某个(a(n) >= 1e18) 不就好了

    然后就是找位置即可

    int main() {
        IOS; a[1] = a[0] = 1;
        rep(i, 2, 1e5) {
            a[i] = a[i - 1] << 1;
            if (a[i] <= 0 || a[i] >= 1e18) break;
        }
        for (cin >> _; _; --_) {
            ll k; cin >> n >> k; set<int> st;
            if (a[n] > 0 && k > a[n]) { cout << "-1
    "; continue; }
            rep(i, 1, n) st.insert(i);
            per(i, n, 1) {
                if (a[i - 1] <= 0 || a[i - 1] >= k) cout << *st.begin() << ' ', st.erase(st.begin());
                else {
                    int l = *st.begin(), r = l;
                    while (a[i - 1] < k) 
                        k -= a[i-- - 1], ++r;
                    per(i, r, l) cout << i << ' ', st.erase(st.begin());
                }
            }
            cout << '
    ';
        }
        return 0;
    }
    
  • 相关阅读:
    wzplayer for android界面
    player stop处理
    wzplayer for android界面
    android屏幕监控上下左右滑动
    OpenGL + C++ + Java
    player stop处理
    EGLHelper
    Android NDK学习 <五> C++ 支持
    【认识之初】
    Java调用windows exe程序
  • 原文地址:https://www.cnblogs.com/2aptx4869/p/14676360.html
Copyright © 2020-2023  润新知