Post

Educational Codeforces Round 194 (Rated for Div. 2) 후기

Educational Codeforces Round 194 (Rated for Div. 2) 후기

대회 링크


1. 대회 개요

항목내용
대회Educational Codeforces Round 194 (Rated for Div. 2)
일시2026-09-08 23:35 KST
배정 시간120분
문제 수7 (A–G)
참가 형태공식 (rated)

2. 결과

항목내용
푼 문제대회 중 A–B (2/7), 이후 C 업솔빙
페널티100분
순위8720 / 14074위 · 상위 62.0%
레이팅474 → 736 (+262) · newbie

레이팅 그래프


3. 풀이 과정

문제결과제출 시각WA
A. Monocarp’s ContestAC6:210
B. Monocarp and ProjectsAC64:373
C. Maximize XOR, Minimize Operations업솔빙
D. Signs of Prefix Sums미시도
E. Cyclic Balance미시도
F. Edge Three-Coloring미시도
G. Sortable Permutations미시도

A. Monocarp’s Contest

두 문제의 난이도를 바꿀 수 있을 때, 첫 번째 문제와 마지막 문제의 난이도를 쉽게 만들어야 했다. 중간 문제중 쉬운 문제의 수를 센 후 첫 번째 문제와 마지막 문제가 쉬운지 어려운지로 조건 분기하니 금방 해결됐다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <bits/stdc++.h>
using namespace std;

void solve() {
    int n;
    cin >> n;

    vector<int> v(n);
    for (int& x : v) cin >> x;

    int cnt0 = count(v.begin() + 1, v.end() - 1, 0);

    if (v.front() == 0 && v.back() == 0) {
        cout << 0 << '\n';
        return;
    }
    if ((v.front() == 0 || v.back() == 0) && cnt0 >= 1) {
        cout << 1 << '\n';
        return;
    }
    if (cnt0 >= 2) {
        cout << 2 << '\n';
        return;
    }
    cout << -1 << '\n';
}

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);

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

풀이 → [Codeforces] #2260A - Monocarp’s Contest


B. Monocarp and Projects

k가 상당히 커서 브루트 포스로는 안 되고 관찰이 필요한 문제일 것 같았다. 몇 가지 케이스를 해보니 특정 시점부터는 나머지가 항상 똑같이 나와서 반복을 생략할 수 있는 것을 알았고 이걸로 앞부분은 반복하고 이 시점부터는 그냥 한방에 곱셈으로 해결할 수 있을 것 같았다. 접근 자체는 맞는 걸 확신했는데 계속 AC가 안 돼서 뭔가 경계 조건 문제나 반례가 있을 것 같았는데 경계 조건 문제도 있었고, xy의 차가 작을 때도 고려해야 한다는 것을 놓쳤다. 디버깅에 시간이 너무 많이 걸려서 좀 아쉬웠다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <bits/stdc++.h>
using namespace std;

void solve() {
    long long x, y, k;
    cin >> x >> y >> k;

    long long sum = 0;
    if (y - 2 * x < 0) {
        sum += (y - x) * k;
    } else {
        if (y - 2 * x >= k) {
            for (int i = 0; i < k; i++) {
                sum += (y + i) % (x + i);
            }
        } else {
            for (int i = 0; i < y - 2 * x; i++) {
                sum += (y + i) % (x + i);
            }
            sum += (y - x) * (k - y + 2 * x - 1);
        }
    }

    cout << sum << '\n';
}

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);

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

풀이 → [Codeforces] #2260B - Monocarp and Projects


C. Maximize XOR, Minimize Operations

최대는 분명 x + y일 때로 보였는데 연산 횟수를 브루트 포스없이 구하는 걸 찾는 게 좀 어려웠다. 분명 비트를 활용해 30번 언저리로 처리하는 것 같았는데 규칙이 잘 안 보였다. 이후 풀다가 앞에서부터 좀 뭉텅이로 던져주는 방식으로 느낌적으로 될 것 같았는데 시간이 좀 빠듯해서 마무리를 못했다. 아래 코드는 통과는 안 됐지만 업솔빙 과정에서는 diffy에서 해당 위치보다 작은 비트들만 구해서 빼주니 해결됐다. 이후 찾아보니 서브 마스크를 활용하면 훨씬 간단하게 해결되는 걸 알았다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <bits/stdc++.h>
using namespace std;

void solve() {
    int x, y;
    cin >> x >> y;

    int sum = x + y;
    int k = 1 << 30;
    int cnt = 0;

    // while (k > 0 && (sum & k) == 0) k >>= 1;
    while (k > 0) {
        if (k & sum) {
            int tmp = (k & x) ^ (k & y);
            if (!tmp) {
                int diff = k - y;
                x -= diff;
                y += diff;
                cnt += diff;
            }
        }

        // cout << "k = " << k << '\n';
        k >>= 1;
    }

    cout << sum << ' ' << cnt << '\n';
}

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);

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

풀이 → [Codeforces] #2260C - Maximize XOR, Minimize Operations


D. Signs of Prefix Sums

대회 중 미시도.


E. Cyclic Balance

대회 중 미시도.


F. Edge Three-Coloring

대회 중 미시도.


G. Sortable Permutations

대회 중 미시도.


총평

대회 이후 조금 더 하니 C도 해결이 돼서 여러모로 좀 아쉬웠다. B 문제의 디버깅이 좀 빨랐으면 다르지 않았을까 하지만 결과는 결과이니 앞으로 좀만 침착하면 좋을 것 같다. 모듈러에 대한 성질, 비트 마스크 모두 코드포스에서는 자주 나오는 개념이지만 일반 코딩테스트에서는 잘 안 나와서 아직은 코포 유형에 적응이 좀 부족하다는 게 크게 느껴졌다.


This post is licensed under CC BY 4.0 by the author.