티스토리 뷰
A. Wonderful Permutation
문제 :
1부터 n까지 각 값이 한번씩 등장하는 길이가 n인 수열 p1,p2,...,pn과 자연수 k(k≤n)이 있다. 이 중 임의의 i,j(1≤i<j≤n)에 대하여 pi와 pj를 교환할 수 있다. 이때 p1+p2+...+pk를 최소로 하려면 몇번의 연산을 해야되는지 구하면 된다.
풀이 :
k개의 값이 최소가 되려면 1+2+...+k일 때가 최소이므로 p1,p2,...,pk 중 k보다 큰 값의 개수가 답이 된다.
코드 :
B. Woeful Permutation
문제 :
임의의 n에 대하여 lcm(1,p1)+lcm(2,p2)+...+lcm(n,pn)을 최대로 하는 수열 p를 찾으면 된다.
풀이 :
n이 홀수일 때 : 1 3 2 5 4 ... n n−1형태가 최대가 된다.
n이 짝수일 때 : 2 1 4 3 ... n n−1형태가 최대가 된다.
(+그냥 이렇게 하면 되겠지 하고 풀긴 했는데 왜 이렇게 해야 최대인지 알아봐야겠다ㅠ)
코드 :
C. Sort Zero
문제 :
길이가 n인 수열 a1,a2,...,an이 있다.(1≤ai≤n) 임의의 x에 대하여 ai=x인 ai들을 0으로 만드는 연산이 있다. 이때 수열이 단조 증가하려면 최소 몇 번의 연산을 해야 하는지 구하면 된다.
풀이 :
수열이 단조 증가라면 가장 마지막 원소(an)가 가장 큰 값이 되어야 한다. 뒤에서부터 앞으로 보면서 (an→a1) 현재의 원소보다 이전의 원소가 큰 부분이 있는지 검사한다. 만약 그 위치가 i라 하면 (ai−1>ai) 1부터 i−1의 값들은 전부 0으로 한다. 여기서 i의 위치를 기억해두고 다시 n부터 이 위치까지 ai−1>ai인 부분이 있는지 검사한다.(0으로 바꾸는 과정에서 i+1∼n의 위치에서 값이 0으로 바뀔 수도 있기 때문에) 만약 있다면 다시 그 위치 이전의 값들을 전부 0으로 바꿔주고 다시 n부터 그 위치까지 검사하면 된다. 만약 없다면 수열이 단조 증가한다는 뜻이므로 끝내면 된다.
코드 :
D. Empty Graph
문제 :
길이가 n인 수열이 있고 이 수열에서 임의의 ai를 x(1≤x≤109)로 최대 k번 변경할 수 있다.
n개의 정점을 가진 무방향 완전 그래프가 있는데 임의의 l,r(1≤l<r≤n)에 대하여 정점l에서 정점r로 이동하는데 드는 비용은 min(al,al+1,...,ar)이다. d(u,v)를 u에서 v로 가는 최단경로라 할 때 max d(u,v)(1≤u<v≤n)을 구하면 된다.
풀이 :
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 |