2018. 8. 13. 16:26, 알고리즘/Codeforces
http://codeforces.com/contest/1019
문제도 그럭저럭 괜찮고 또 잘 풀어내서 좋았습니다.
A - Elections (Code)
내가 k+1개 이상의 표를 받고, 다른 모든 party가 k개 이하의 표를 받기 위해 필요한 cost를 $O(NlgN)$에 구할 수 있습니다. 이제 $k = 1 to N/2+1$에 대해 비용을 확인해 최솟값을 택하면 됩니다.
B - The hat (Code)
N이 4의 배수가 아니면 나와 내 partner가 가진 값의 기우성이 일치하지 않으므로 쌍이 존재하지 않음을 쉽게 보일 수 있습니다. N이 4의 배수면 EVT와 비슷한 아이디어로 생각해봅시다. 일반성을 잃지않고 A[1] < A[N/2+1]이라고 하면, 1에서 N/2+1로 갈 때는 값이 증가하고 N/2+1에서 1로 갈 때는 값이 감소하므로 반드시 중간에 일치하는 구간이 존재합니다. 이제 Binary Search로 중간을 계속 찍으면서 값이 일치하는 구간을 절반으로 줄여나가면 됩니다.
C, D도 문제를 해결하지는 못했지만 굉장히 좋은 문제라는 생각이 들었습니다.
'알고리즘 > Codeforces' 카테고리의 다른 글
[Codeforces] AIM Tech Round 5 (0) | 2018.09.03 |
---|---|
[Codeforces] Round #505 (0) | 2018.08.20 |
[Codeforces] Round #504 (0) | 2018.08.18 |
[Codeforces] Round #500 (Div. 1) (0) | 2018.08.11 |
[Codeforces] Round #499 (Div. 1) (0) | 2018.07.27 |
[Codeforces] Round #493 (Div. 1) (0) | 2018.07.02 |
Comments