Home Codeforces Round #736 (Div. 2) 후기
Post
Cancel

Codeforces Round #736 (Div. 2) 후기

전과 같은 이유로 준비하는 contest이다.

이 결과에 따라 scpc에서의 성적도 기대할 수 있을 것이다.

A. Gregor and Cryptography

풀이 보기

풀이

다른 풀이는 필요없다. 입력되는 모든 숫자가 $5$보다 크거나 같은데, 모두 소수라는 점을 이용할 수 있다.

입력되는 숫자는 2가 아닌 소수이므로 모두 홀수일 것이다. 따라서 그 수를 $2$로 나눈 나머지는 $1$로 고정된다.

그럼 또 어떤 숫자가 나머지를 $1$로 고정할 수 있을까? 답은 $N-1$이다. 고민조차 할 필요 없는 문제이다.

코드

1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>

int main() {
    int t;
    scanf("%d", &t);
    while (t--) {
        int n;
        scanf("%d", &n);
        printf("%d %d\n", 2, n - 1);
    }
    return 0;
}

B. Gregor and the Pawn Game

풀이 보기

풀이

등호 실수했다! 요즘 실수가 너무 많이 보인다. 집중력이 떨어진 것일까..

문제 자체 아이디어는 매우 쉽다. 체스 좀 해봤다면 알기 쉽다.

자신의 눈앞이 비어있다면 직진하여 갈 수 있을 것이다. 다만 앞이 막혀있다면 왼쪽이나 오른쪽으로 선회해야할텐데, 움직이려는 칸에는 상대의 폰이 있어야한다는 전제조건이 따른다.

하지만 있기만 하면 무작정 들어가면 된다. 어짜피 하나가 되면 다른 하나가 되지 않는 구조이므로, 개수만 잘 세어주면 통과할 수 있다.

코드

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
39
40
41
42
43
44
45
46
47
48
49
50
#include <stdio.h>

#define M (int)(2e5 + 10)
const char Yes = '1';
const char No = '0';
const char Did = '2';

char enemy[M];
char ours[M];
int n;

int main() {
    int t;
    scanf("%d", &t);
    while (t--) {
        scanf("%d", &n);
        scanf("%s %s", enemy, ours);

        int result = 0;

        for (int i = 0; i < n; ++i) {
            if (ours[i] == No) {
                continue;
            }

            if (enemy[i] == No) {
                ++result;
            } else {
                if (i == 0 && enemy[1] == Yes) {
                    ++result;
                    enemy[1] = Did;
                } else if (i == n - 1 && enemy[i - 1] == Yes) {
                    ++result;
                    enemy[i - 1] = Did;
                } else {
                    if (enemy[i - 1] == Yes) {
                        ++result;
                        enemy[i - 1] = Did;
                    } else if (enemy[i + 1] == Yes) {
                        ++result;
                        enemy[i + 1] = Did;
                    }
                }
            }
        }

        printf("%d\n", result);
    }
    return 0;
}

결과

ContestStart timeRankSolvedRating changeNew rating
#736 (Div. 2)2021/8/1
23:35
98172-1431482

완벽히 털린 contest였다…

B번 문제에서 한 실수도 그렇고 C번 문제에서 쿼리문제임을 생각 못해서 패널티마저 많이 받아버렸다. 여러부분에서 많이 당한 contest였다.

복기할만한 것도 없다. 완벽한 패배를 당했고, 오만함에 대한 결과를 돌려받았다고 생각한다.

다시 파란색 닉네임을 가질 수 있도록 초심을 찾아야겠다.

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