Competitive Programming/Codeforces

대회후기: Codeforces Round #750 (Div. 2)

Syphon 2021. 10. 25. 11:00

 손이 다쳐서 갑자기 사회...가 아니라 병원으로 튕겨나왔다.

 

봉인된 오른손

 

한손으로 레이팅 방어가 될지 의문이었지만, 뭐든 해봐야 아는 법!

코포는 못참거든 ㅋㅋㅋㅋㅋㅋ


A: Luntik and Concerts

$a, b, c$ 각각의 홀짝성을 기준으로 8 경우로 나눠 풀었다.

알고보니 총합의 홀짝성만 따져도 됐다.

AC: 10 분


B: Luntik and Subsequences

Trivial.

AC: 13 분


C: Grandma Capa Knits a Scarf

모든 알파벳 $k$마다 시도해보면 된다.

특정 알파벳으로 palindrome이 가능하다면, 그 알파벳을 전부 다 걷어내도 가능하다. 이 사실로 가능성 판정을 한다.

$k$ 제외 다른 알파벳들로 문자열을 쪼갰을 때, 각 구역의 $k$ 개수를 대칭적으로 만들어주기 위해 지워야 하는 $k$의 개수를 더해준다.

26개 알파벳에 대해 시행하여 최솟값을 찾으면 끝.

AC: 28 분


D: Vupsen, Pupsen and 0

$b$의 총합 제한이 $a$의 총합 제한과 일치 한다는 사실이 큰 힌트가 됐다. $a$ 와 동일한 원소들을 순서, 부호만 바꿔 $b$를 만들 수 있겠다는 생각을 하게 되었다.  이러한 생각을 한 이후에 답은 꽤 쉽게 보였는데, 단순히 두 숫자씩 짝지어 값을 바꿔치기 하고, 하나의 부호를 바꿔주기만 하면 된다.

문제는 원소의 개수가 홀수개여서 모든 원수를 짝지을 수 없을 때 발생한다.

이럴 때는 제일 앞의 세 원소만 따로 떼어놓고 해결했다. 세 원소를 (첫 두 원소의 합)(세 번째 원소)로 구분하여 생각하면 동일한 방식으로 해결이 가능하다.

이 때 예외적인 상황이 발생할 수 있는데, 첫 두 원소의 합이 $10^4$를 초과할 때이다. 이 경우 그냥 한 원소의 부호를 뒤집으면(그리고 $b$에서 상응하는 값도 뒤집어주면) 해결 가능하다.

이 상황에서 추가적으로 발생하는 예외는 첫 두 원소의 절댓값이 같을 때이다(왜냐면 이 때 세 번째 원소에 할당되는 $b$ 값이 0이 돼버린다). 이 경우 그냥 둘째 원소와 셋째 원소를 바꿔주고 시작한다.

또 이 경우에 있는 예외는 세 절댓값이 모두 같을 때이다. 적당히 부호 생각해서 $2, -1, -1$을 할당한다.

AC: 1 시간 1 분


E: Pchelyonok and Segments

못풀었다 ㅠ


F1: Korney Korneevich and XOR (easy version)

ㅠㅠ


총평

양손이든 한손이든 DP 문제는 못푼다.

하....

 

레이팅 변화: 1897 - 36 = 1861

My Performance: ★★★☆☆


연습지

가 있을 수가 없지...

타자치기도 버겁다.