CF1012 Div2 - 赛时 ABCD1

A

void kdog(int test) {
    int n, m; cin >> n >> m;
    for (int i = 0; i < m; i++) cout << 1;
    for (int i = 0; i < n - m; i++) cout << 0;
    cout << "\n";
} 

signed main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    int T;
    T = 1;
    cin >> T;
    init();
    for (int test = 1; test <= T; test++) {
        kdog(test);
    }
    return 0;
}

B

void kdog(int test) {
    int n; cin >> n;
    cout << (n - 1) * 2 + 1 << "\n";
    cout << 1 << " " << 1 << " " << n << "\n";
    for (int i = 2; i <= n; i++) {
        cout << i << " " << 1 << " " << n - i + 1 << "\n";
        cout << i << " " << n - i + 2 << " " << n << "\n";
    }
} 

signed main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    int T;
    T = 1;
    cin >> T;
    init();
    for (int test = 1; test <= T; test++) {
        kdog(test);
    }
    return 0;
}

C

int lowbit(int x) {
    return x & (-x);
}

int ne(int x) {
    return lowbit(~x);
}

int count(int x) {
    int res = 0;
    while (x) {
        res += x % 2;
        x /= 2;
    }
    return res;
}

void kdog(int test) {
    int n, k; cin >> n >> k;
    vi a(n); cin >> a;
    priority_queue<pii, vector<pii>, greater<pii>> q;
    for (int i = 0; i < n; i++) {
        q.push({ne(a[i]), a[i]});
    }
    while (k > 0) {
        auto [v, x] = q.top(); q.pop();
        if (v > k) {
            q.push({v, x});
            break;
        }
        k -= v;
        q.push({ne(x | v), x | v});
    }
    int res = 0;
    while (!q.empty()) {
        auto [v, x] = q.top(); q.pop();
        res += count(x);
    }
    cout << res << "\n";
} 

signed main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    int T;
    T = 1;
    cin >> T;
    init();
    for (int test = 1; test <= T; test++) {
        kdog(test);
    }
    return 0;
}

D1

void kdog(int test) {
    int n, k; cin >> n >> k;
    vi p(n), d(n); cin >> p >> d;
    map<int, int> pos;
    for (int i = 0; i < n; i++) pos[p[i]] = i + 1;

    int q; cin >> q;

    auto solve = [&]() -> void {
        int x; cin >> x;
        vi vis(n);
        int dir = 1, t = 0;
        while (1) {
            int px = pos[x];
            if (px && t % k == d[px - 1]) {
                vis[px - 1]++;
                dir = -dir;
                if (vis[px - 1] == 3) {
                    cout << "NO\n";
                    return;
                }
            }

            bool f = 0;

            if (!px) {
                auto it = lower_bound(all(p), x);
                if (it == p.end()) {
                    cout << "YES\n";
                    return;
                }
                int i = it - p.begin();
                for ( ; i < n; i++) {
                    int ot = t + p[i] - x;
                    if (ot % k == d[i]) {
                        t = ot;
                        x = p[i];
                        f = 1;
                        break;
                    }
                }
            } else if (dir == -1) {
                for (int i = px - 2; i >= 0; i--) {
                    int ot = t + p[px - 1] - p[i];
                    if (ot % k == d[i]) {
                        t = ot;
                        x = p[i];
                        f = 1;
                        break;
                    }
                }
            } else {
                for (int i = px; i < n; i++) {
                    int ot = t + p[i] - p[px - 1];
                    if (ot % k == d[i]) {
                        t = ot;
                        x = p[i];
                        f = 1;
                        break;
                    }
                }
            }

            if (!f) {
                cout << "YES\n";
                return;
            } 
        }
    };

    while (q--) solve();
} 

signed main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    int T;
    T = 1;
    cin >> T;
    init();
    for (int test = 1; test <= T; test++) {
        kdog(test);
    }
    return 0;
}
posted @ 2025-06-13 13:08  k(d)o(g)  阅读(27)  评论(0)    收藏  举报