티스토리 뷰

PS/CP

Codeforces Round #642 (Div. 3)

JJaewon 2020. 5. 15. 10:15

Codeforces Round #642 (Div. 3)에 부계정으로 참가했다.

 

 

저번 Div. 4를 제외하고 첫 올솔브다 ㅎㅎ. 사실 Div. 2 올솔은 능력 밖이기도 하고.

 

A. Most Unstable Array

$N=1$이면 0 $N=2$이면 M, 아니면 2M 이다.

 

B. Two Arrays And Swaps

A에서 제일 작은것과 B에서 제일 큰것 swap을 반복해주면 된다. 왜 $N \le 30$?

 

C. Board Moves

가운데로 모으는게 최적임을 알 수 있다.

이렇게

$O(N)$ 에 해도 되고, 일반항도 있다 카더라.

 

D. Constructing the Array

{구간의 길이, 구간의 시작점} pair로 우선순위 큐를 관리하면 된다. 길이와 시작점의 대소 우선순위가 다름에 유의하자.

 

E. K-periodic Garland

$dp[i]$ : i번째 전구를 켤 때 (1~i) 전구들을 K-periodic 하게 만들기 위한 최소 비용

이때 $dp[i]$ 는 $dp[i-K]$에서 가져오거나, i번째만 켜고 나머지는 다 끄거나 둘 중 하나다.

이때 어떤 구간에 켜져있는 전구의 개수를 빠르게 구해야 하는데, 이는 prefix sum으로 $O(1)$에 가능하다.

실제 답은 $dp[i]$ + ($[i+1;N]$ 에 켜져있는 전구 개수) 가 됨을 유의하자.

 

F. Decreaseing Heights

$(1,1)$ 에서 $(n,m)$ 으로 가는 경로에서, 적어도 하나의 $a_{i,j}$는 변화시키지 않는게 최적이다. 따라서 모든 $a_{i,j}$에 대해, 해당 값을 고정시킨 후 답을 구하자. $a_{i,j}$를 고정시켰다면, $(x,y)$ 의 값은 $a_{x,y}-a_{i,j}+i-x+j-x$ 가 되어야 한다. 격자점 최단거리와 거의 동일한 $O(nm)$ dp를 통해 고정된 $a_{i,j}$ 에 대해 답을 구할 수 있으므로, 총 $O(n^{2}m^{2})$에 해결할 수 있다.

'PS > CP' 카테고리의 다른 글

Codeforces Round #644 (Div. 3)  (1) 2020.05.25
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
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
글 보관함