Featured image of post [Algorithm] C++ 백준 11932번: 트리와 K번째 수 - PST+LCA

[Algorithm] C++ 백준 11932번: 트리와 K번째 수 - PST+LCA

정점 값 좌표압축 뒤 루트→정점 경로마다 영속 세그먼트 트리를 누적 구축하고, LCA를 이용해 경로 빈도를 포함-배제로 합산해 K번째 수를 찾습니다. 세그먼트 트리에서 왼/오 자식으로 이진 하향 탐색해 순위 k를 복원하며, 전체 시간/공간은 O((N+M)logN)/O(NlogN) 수준입니다.

Featured image of post [Algorithm] C++ 백준 11933번: 공장들

[Algorithm] C++ 백준 11933번: 공장들

트리 위 두 회사 공장 집합 A, B 사이의 최소 거리를 구하는 문제입니다. LCA 전처리 후 질의마다 A∪B와 인접 LCA들로 버추얼 트리를 만들고, 두 번의 DP로 각 정점의 A까지/ B까지 최단거리를 구해 min(dA+dB)로 답합니다. O((|A|+|B|)logN)으로 6초 제한을 안정 통과합니다.

Featured image of post [Algorithm] C++ 백준 1210번: 마피아 - 정점 분할 최소 컷

[Algorithm] C++ 백준 1210번: 마피아 - 정점 분할 최소 컷

마피아의 이동을 막기 위해 톨게이트를 최소 비용으로 점거하는 문제를 정점 가중치 s-t 최소 컷으로 모델링합니다. 각 정점을 in/out으로 분할하고 내부 간선에 비용을 두어 최대 유량=최소 컷으로 풀이하며, 시작/도착 정점 점거 허용까지 반영합니다.

Featured image of post [Algorithm] C++ 백준 12876번: 반평면 땅따먹기 2

[Algorithm] C++ 백준 12876번: 반평면 땅따먹기 2

직선 (a, b)을 동적으로 추가/삭제하고 질의 x마다 ax+b의 최댓값을 구하는 문제를 세그먼트 트리(시간 구간) 오프라인 + 롤백 가능한 Li Chao Tree로 해결한다. 공집합 시 EMPTY 처리, 64비트 안전, O(N log N log X) 복잡도로 30만 연산을 통과한다.

Featured image of post [Algorithm] C++ 백준 12918번: 정리정돈

[Algorithm] C++ 백준 12918번: 정리정돈

헝가리안 알고리즘으로 대칭 쌍 매칭을 최소화해 이동 거리 합의 최솟값을 구합니다. 비용을 √((xi+xj)^2+(yi−yj)^2)로 정의해 할당 최적화 후 2로 나누어 답을 얻습니다. 증명·엣지·복잡도·C++ 구현 포함

Featured image of post [Algorithm] C++ 백준 12963번: 달리기

[Algorithm] C++ 백준 12963번: 달리기

도로 i의 용량이 3^i인 무향 그래프에서 0→N-1로 도달 가능한 최대 인원을 구한다. 3의 거듭제곱 가중치의 유일성으로 최소 s-t 컷이 단일해가 되며, 간선을 인덱스 내림차순으로 확인하며 DSU로 s와 t를 잇는 간선만 더해 합을 구해 1e9+7로 출력한다.