Educational Codeforces Round 111

July 22, 2021

콘테스트 기록

A, B를 어렵지 않게 풀었고 C는 아이디어를 생각해내는데 시간을 좀 썼다. D, E, F는 무진장 어려웠다. A는 00:04, B는 00:11, C는 00:35에 풀었다. D, E, F는 풀지 못했다.

1550A Find The Array

길이 nn인 수열로 최대 n2n^2까지 만들 수 있다. 길이 mm인 수열의 합이 ll일 때, 가장 큰 항의 값을 1 줄임으로써 길이 mm이고 합이 l1l - 1인 수열을 만들 수 있다. n1+1\left\lfloor \sqrt{n - 1} \right\rfloor + 1가 원하는 답이 된다.

1550B Maximum Cost Deletion

연속하는 문자열을 지운 횟수를 kk라고 할 때, 전체 점수는 an+bkan + bk이다. 연속하는 조각의 개수가 mm일 때, 이는 최소 m/2+1m / 2 + 1번 지워야 하고, 최대 nn번까지 지울 수 있다. an+max{b(m/2+1),bn}an + \max\{b \cdot (m/2 + 1), bn\}이 원하는 답이 된다.

1550C Manhattan Subarrays

d(pi,pk)=d(pi,pj)+d(pj,pk)d(p_i, p_k) = d(p_i, p_j) + d(p_j, p_k)인 경우, jjiikk 사이에 있다. i<ki < k를 가정하면, i<j<ki < j < k이다. 또한 aja_jai,aka_i, a_k 사이에 있고, ai,aj,aka_i, a_j, a_k는 단조증가 혹은 단조감소이다.

Erdős-Szekeres 정리에 의해 길이가 5인 수열은 항상 길이 3인 단조증가하는 부분수열 또는 길이 3인 단조감소하는 부분수열을 포함하고, 따라서 이는 항상 나쁜 수열이다. 각 l=1,,nl = 1, \cdots, n에 대해 al,al+1,al+2,al+3a_l, a_{l + 1}, a_{l + 2}, a_{l + 3}의 좋은 부분 수열의 개수를 찾아서 더하면 원하는 답이 된다.