티스토리 뷰

ps

codeforces round 813 (div.2)

logwns 2022. 8. 20. 23:24

A. Wonderful Permutation

 

문제 :

1부터 n까지 각 값이 한번씩 등장하는 길이가 n인 수열 p1,p2,...,pn과 자연수 k(kn)이 있다. 이 중 임의의 i,j(1i<jn)에 대하여 pipj를 교환할 수 있다. 이때 p1+p2+...+pk를 최소로 하려면 몇번의 연산을 해야되는지 구하면 된다.

 

 

풀이 :

k개의 값이 최소가 되려면 1+2+...+k일 때가 최소이므로 p1,p2,...,pkk보다 큰 값의 개수가 답이 된다.

 

 

코드 :

cpp
열기

 


 

B. Woeful Permutation

 

 

문제 :

임의의 n에 대하여 lcm(1,p1)+lcm(2,p2)+...+lcm(n,pn)을 최대로 하는 수열 p를 찾으면 된다.

 

 

풀이 :

n이 홀수일 때 : 1 3 2 5 4 ... n n1형태가 최대가 된다.

n이 짝수일 때 : 2 1 4 3 ... n n1형태가 최대가 된다.

 

(+그냥 이렇게 하면 되겠지 하고 풀긴 했는데 왜 이렇게 해야 최대인지 알아봐야겠다ㅠ)

 

 

코드 :

cpp
열기

 


 

C. Sort Zero

 

문제 :

길이가 n인 수열 a1,a2,...,an이 있다.(1ain) 임의의 x에 대하여 ai=xai들을 0으로 만드는 연산이 있다. 이때 수열이 단조 증가하려면 최소 몇 번의 연산을 해야 하는지 구하면 된다.

 

 

풀이 :

수열이 단조 증가라면 가장 마지막 원소(an)가 가장 큰 값이 되어야 한다. 뒤에서부터 앞으로 보면서 (ana1) 현재의 원소보다 이전의 원소가 큰 부분이 있는지 검사한다. 만약 그 위치가 i라 하면 (ai1>ai) 1부터 i1의 값들은 전부 0으로 한다. 여기서 i의 위치를 기억해두고 다시 n부터 이 위치까지 ai1>ai인 부분이 있는지 검사한다.(0으로 바꾸는 과정에서 i+1n의 위치에서 값이 0으로 바뀔 수도 있기 때문에) 만약 있다면 다시 그 위치 이전의 값들을 전부 0으로 바꿔주고 다시 n부터 그 위치까지 검사하면 된다. 만약 없다면 수열이 단조 증가한다는 뜻이므로 끝내면 된다.

 

 

코드 :

cpp
열기

 


 

D. Empty Graph

 

문제 :

길이가 n인 수열이 있고 이 수열에서 임의의 aix(1x109)로 최대 k번 변경할 수 있다.

n개의 정점을 가진 무방향 완전 그래프가 있는데 임의의 l,r(1l<rn)에 대하여 정점l에서 정점r로 이동하는데 드는 비용은 min(al,al+1,...,ar)이다. d(u,v)u에서 v로 가는 최단경로라 할 때 max d(u,v)(1u<vn)을 구하면 된다.

 

 

풀이 :

 


 

E1. LCM Sum (easy version)

E2. LCM Sum (hard version)

 


F. Triameter

 

'ps' 카테고리의 다른 글

codeforces round 815 (div.2)  (0) 2022.08.30
codeforces round 814 (div.2)  (0) 2022.08.25
codeforces round 812 (div.2)  (0) 2022.08.17
educational codeforces round 133  (0) 2022.08.11
codeforces round 811 (div.3)  (0) 2022.08.06
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/05   »
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
글 보관함