Notice
Recent Posts
Recent Comments
Link
«   2026/03   »
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
Tags
more
Archives
Today
Total
관리 메뉴

jay153의 PS 일지

CodeForces Round 1018 - Div 1.5 본문

CodeForces

CodeForces Round 1018 - Div 1.5

jay153 2025. 5. 14. 17:30

https://codeforces.com/contest/2096

 

 

Performance Rating : 2400

 

A

'<'와 '>'의 의미를 잘못 파악하고 문제를 풀었다가 틀린 것을 확인하고 다시 풀어 9분이라는 많은 시간이 들어갔다. 문제를 잘 읽자.

 

B

생각보다 헷갈려서 고민을 하다가 $\mathrm{max}(a_i,b_i)$는 모두 더하고 $\mathrm{min}(a_i,b_i)$ 중 가장 큰 $k$개를 더하면 된다는 것을 알게 되었다.

 

C

처음에 하나의 행 또는 열에 여러 번 공사가 가능한 것으로 착각해 고민을 하다가 문제를 잘못 읽었음을 알게 되었다. 그 후에는 특정 행에서 수행하는 것은 열끼리 비교에서 영향을 주지 않는다는 것을 바탕으로 $dp$를 활용해 풀었다. 행과 열에 대해 $dp[i+1][j]$를 이전 행 또는 열에서 $i$만큼의 변화를 주었을 때 비용의 최솟값이라고 정의하면 약간의 구현을 통해 답을 구할 수 있다.

 

D

결국 불변하는 것을 구해야 한다는 생각을 했다. 아무리 수행을 해도 변하지 않는 것은 $x=t$ 위에 있는 점 개수의 기우성, $x+y=t$ 위에 있는 점 개수의 기우성이다. 이를 통해 기우성이 홀수인 $x$, $x+y$의 값을 구해 풀었다.

 

E

inversion counting을 먼저 구해주고 inversion counting을 $1$밖에 줄이지 못하는 수행을 최소화할 생각을 했다. 처음에는 앞에 $P$가 홀수개인 $B$가 다음 $B$ 사이에 짝수개의 $P$가 있으면 묶어서 옮기고 아니면 $1$을 더해주는 풀이를 작성했지만 틀렸다.  반례를 찾아보니  PBPBBPB가 있었는데 이 케이스는 가운데에 붙어있는 BB를 먼저 옮기면 모든 과정에서 inversion counting을 2씩 줄일 수 있다. 이를 관찰하고 두 번째 풀이를 작성했지만 틀렸고 반례를 고민하다가 구현의 문제일 수 있을 것 같아 스택을 활용한 구현으로 코드를 고쳐서 냈고 AC를 받았다.

'CodeForces' 카테고리의 다른 글

CodeForces Round 1021 - Div 1  (0) 2025.05.19
CodeForces Round 939 - Div 2  (0) 2025.05.15
CodeForces Round 1016 - Div 3  (0) 2025.05.14
CodeForces Round 1015 - Div 1.5  (0) 2025.05.13
CodeForces Round 940 - Div 2  (0) 2025.05.13