티스토리 뷰

Codeforces

Educational Codeforces Round 41

jwvg0425 2018. 4. 5. 15:10

링크 : http://codeforces.com/contest/961


아직 시스템 테스트가 남긴 했지만 적당히 5문제 잘 풀었다. E번에서 코드 짜다가 갑자기 생각이 이상해져서 패널티를 많이 먹은게 아쉽다. 처음부터 좀 더 정확하게 생각했으면 패널티를 4~50은 덜 받았을텐데.. 그게 좀 아쉽. D번도 그렇고 E번도 그렇고 코드 짜다가 꼬이는 걸 어떻게 좀 해야할텐데 싶다.


A. Tetris


그냥 나온 숫자들 중에 제일 횟수 적은 거 출력해주면 된다.



B. Lecture Sleep


t 값이 1인 건 다 답에 포함시켜놓고, 맨 앞부터 k개 구간을 유지하면서 그 k개 안쪽에 있는 0인 애들을 다 1로 바꿨을 때의 값을 순서대로 구해서 그 중 최댓값을 출력해주면 된다.



C. Chessboard


완전 구현 문제. 4등분된 조각을 붙이고 / 색칠하는 모든 경우에 대해 최솟값 구해서 출력해주면 된다.



D. Pair Of Lines


1-2 점이 같은 라인에 있는 경우, 1-3 점이 같은 라인에 있는 경우, 2-3 점이 같은 라인에 있는 경우 세 가지만 확인하면 된다.


1-2 점이 같은 라인에 있는 경우가 안 된다면 -> 1번 점과 2번 점은 반드시 서로 다른 라인 위에 존재해야 한다. 그러면 이제 이 경우, 또 다른 3번 점에 대해 이 점이 1번 점과 같은 라인 위거나 아니면 2번 점과 같은 라인 위거나 두 가지 경우밖에 남지 않는다(둘 중 한 라인에는 반드시 속해야 하기 때문). 따라서 모든 경우를 저 3가지로 커버 가능하므로, 3가지 경우에 대해 전체 N개 점을 순회하며 그렇게 점 집합을 구분할 수 있는지 확인해주면 된다.



E. Tufurama


i번째 시즌에 대해서, i+1~ai 시즌까지 중 에피소드가 i이상인 것들의 개수를 모두 구해 더해주면 답이 된다. 이걸 구하는 방법은 굉장히 여러 가지가 있을 수 있는데, 나는 펜윅으로 했다. i번째 시즌 루프에서 배열에 k번째 원소= k번째 시즌이 에피소드가 i이상이면 1, 아니면 0으로 정의하고 여기서 펜윅트리를 이용해 구간합을 빠르게 구한다. 저런 배열을 유지하는 건 간단한데, 에피소드가 동일한 시즌들을 모두 미리 묶어 놓은 후 시즌 i번째 루프를 지나갈 때 에피소드가 i이 모든 시즌들을 다 배열에서 제거해주면 배열에는 항상 에피소드가 i보다 큰 시즌들만 남아있게 된다.



'Codeforces' 카테고리의 다른 글

[2020-09-08] Codeforces Round 543 (Div.1)  (0) 2020.09.08
[2020-09-07] Codeforces Round 503 (Div.1)  (0) 2020.09.08
[875D] High Cry  (0) 2018.01.12
Educational Codeforces Round 33  (0) 2017.11.26
[883J] Renovation  (0) 2017.10.22
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/04   »
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
글 보관함