• Codeforces Round #720 (Div. 2)


    Codeforces Round #720 (Div. 2)

    A - Nastia and Nearly Good Numbers

    int main() {
        IOS;
        for (cin >> _; _; --_) {
            ll a, b; cin >> a >> b;
            if (b == 1) cout << "NO
    ";
            else if (b != 2) cout << "YES
    " << a << ' ' << a * (b - 1) << ' ' << a * b << '
    ';
            else cout << "YES
    " << a << ' ' << a * 3 << ' ' << 2 * a * b << '
    ';
        }
        return 0;
    }
    

    B - Nastia and a Good Array

    int main() {
        IOS;
        for (cin >> _; _; --_) {
            cin >> n;
            rep (i, 1, n) cin >> a[i]; cout << n - 1 << '
    ';
            int k = min_element(a + 1, a + 1 + n) - a; a[0] = a[k];
            rep (i, 1, k - 2) cout << i << ' ' << k << ' ' << a[i - 1] + 1 << ' ' << a[k] << '
    ', a[i] = a[i - 1] + 1;
            if (k - 1) {
                a[k - 1] = a[k - 2];
                while (__gcd(a[k - 1], a[k - 2]) != 1 || __gcd(a[k - 1], a[k]) != 1) ++a[k - 1];
                cout << k - 1 << ' ' << k << ' ' << a[k - 1] << ' ' << a[k] << '
    ';
            }
            rep (i, k + 1, n) cout << i << ' ' << k << ' ' << a[i - 1] + 1 << ' ' << a[k] << '
    ', a[i] = a[i - 1] + 1;
        }
        return 0;
    }
    

    C - Nastia and a Hidden Permutation

    先用(left lfloor frac{n}{2} ight floor + 1) 次找到1

    再用(n - 1) 把剩下的数找出来

    故题目给你(left lfloor frac{3 imes n}{2} ight floor)

    int ask(int x, int y, int z, bool f) {
        if (!f) cout << "? 1 " << x << ' ' << y << ' ' << z << endl;
        else cout << "? 2 " << x << ' ' << y << ' ' << z << endl;
        cin >> x; return x;
    }
     
    int main() {
        IOS;
        for (cin >> _; _; --_) {
            cin >> n; int id;
            for (int i = 1; i <= n; i += 2)
                if (i + 1 <= n) {
                    int c = ask(i, i + 1, 1, 1);
                    if (c == 1) { a[i] = 1; id = i, break; }
                    else if (c == 2 && ask(i + 1, i, 1, 1) == 1) { a[i + 1] = 1; id = i + 1; break; }
                }
                else { id = i; break; }
            rep (j, 1, n) if (id ^ j) a[j] = ask(id, j, n - 1, 0);
            cout << "! ";
            rep (i, 1, n) cout << a[i] << ' '; cout << endl;
        }
        return 0;
    }
    

    D - Nastia Plays with a Tree

    dfs遍历, 节点有1个孩子不用拆, 有两个拆成下来, 成一条链, 有多个拆成两个在拆下来

    VI h[N];
    vector<PII> a, b;  
    
    int dfs(int x, int fa) {
        int l = 0, r = 0;
        for (auto &y : h[x]) if (y ^ fa) {
            int cur = dfs(y, x);
            if (!cur) continue;
            if (r) a.pb(x, y), b.pb(y, cur);
            else if (!l) l = cur;
            else if (!r) r = cur;
        }
        return l ? r && fa ? a.pb(fa, x), b.pb(l, r), 0 : l : x;
    }
    
    int main() {
        IOS;
        for (cin >> _; _; --_) {
            cin >> n; vector<PII>().swap(a); vector<PII>().swap(b);
            rep(i, 1, n) VI().swap(h[i]);
            rep(i, 1, n - 1) { int u, v; cin >> u >> v; h[u].pb(v); h[v].pb(u); }
            m = dfs(1, 0); cout << a.size() << '
    ';
            rep (i, 0, (int)a.size() - 1)
                cout << a[i].fi << ' ' << a[i].se << ' ' << m << ' ' << b[i].fi << '
    ', m = b[i].se;
        }
        return 0;
    }
    
  • 相关阅读:
    【转】验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。
    【转】在控制台、WinForm项目中的嵌入mdf文件的烦恼
    【转】ADB server didn't ACK
    【转】android中AVD的使用
    【转】你不可以不知道的findViewById
    【转】Android中的view
    【转】c# 如何获取项目的根目录
    TYVJ 1452 最大权闭合图
    NOIP 最后的总结
    POJ 2396 有上下界的可行流
  • 原文地址:https://www.cnblogs.com/2aptx4869/p/14743709.html
Copyright © 2020-2023  润新知