/
https://42jerrykim.github.io/ _index.md
마피아의 이동을 막기 위해 톨게이트를 최소 비용으로 점거하는 문제를 정점 가중치 s-t 최소 컷으로 모델링합니다. 각 정점을 in/out으로 분할하고 내부 간선에 비용을 두어 최대 유량=최소 컷으로 풀이하며, 시작/도착 정점 점거 허용까지 반영합니다. 메시지를 HQ 경유로 순차 전달할 때 비용은 지사별 HQ 왕복거리 합에 (그룹 크기−1)을 곱한 합으로 환원된다. HQ 기준 다익스트라로 w를 구해 정렬·접두사합 후 분할정복 DP로 s구간 최적 분할하여 최소값을 구한다. 구간 덧셈과 구간 GCD 질의를 함께 처리합니다. 차분 배열과 세그먼트 트리로 d[l+1..r]의 GCD를 유지하고, 펜윅트리로 a[l]을 복원해 정답을 gcd(|a[l]|, G)로 구해 O(logN)에 해결합니다. 경계·절댓값·64-bit 주의. 직선 (a, b)을 동적으로 추가/삭제하고 질의 x마다 ax+b의 최댓값을 구하는 문제를 세그먼트 트리(시간 구간) 오프라인 + 롤백 가능한 Li Chao Tree로 해결한다. 공집합 시 EMPTY 처리, 64비트 안전, O(N log N log X) 복잡도로 30만 연산을 통과한다. 헝가리안 알고리즘으로 대칭 쌍 매칭을 최소화해 이동 거리 합의 최솟값을 구합니다. 비용을 √((xi+xj)^2+(yi−yj)^2)로 정의해 할당 최적화 후 2로 나누어 답을 얻습니다. 증명·엣지·복잡도·C++ 구현 포함 도로 i의 용량이 3^i인 무향 그래프에서 0→N-1로 도달 가능한 최대 인원을 구한다. 3의 거듭제곱 가중치의 유일성으로 최소 s-t 컷이 단일해가 되며, 간선을 인덱스 내림차순으로 확인하며 DSU로 s와 t를 잇는 간선만 더해 합을 구해 1e9+7로 출력한다. 연속한 L칸을 G개의 구간으로 분할해 각 구간 비용을 (길이×구간합)으로 정의하고 총합을 최소화합니다. dp[g][r]=min(dp[g-1][k]+cost(k+1,r))를 이용해 분할정복 최적화로 O(G·L·logL)에 해결하며, 누적합으로 O(1) 구간비용·경계·64비트 오버플로를 꼼꼼히 점검합니다. 수열 B가 엄격히 증가하도록 하면서 |B_i−A_i|의 합을 최소화하는 문제. A_i−i로 변환해 비내림 수열 적합 문제로 줄이고, 최대 힙으로 중간값을 유지하는 slope trick을 적용해 O(N log N)로 해결한다. 32비트 범위, 경계·반례까지 점검한다. 각 다각형을 최소각·최대각 꼭짓점으로 압축한 선분으로 바꾼 뒤, 각도 스위핑과 ccw 기반 비교(set)를 이용해 현재 각도에서 최전면 선분만 표시합니다. 표시된 선분 수를 제외해 완전히 가려진 다각형 개수를 계산하는 풀이입니다. 트리에서 간선 가중치 갱신과 경로 최댓값 질의를 처리하는 최적 풀이를 정리합니다. Heavy-Light Decomposition과 세그먼트 트리를 결합해 각 쿼리를 O(log N)에 해결하고, 구현 포인트·엣지 케이스·정당성·복잡도를 점검합니다.