2021년 1월 21일 PS 일지

2021. 1. 21. 16:59PS/Problem Solving

1. Persistence Segment Tree 연습문제 풀이

www.acmicpc.net/problem/11932

 

11932번: 트리와 K번째 수

첫째 줄에는 두 개의 양의 정수 N과 M이 주어진다. (1 ≤ N, M ≤ 100,000) 둘째 줄에는 각 정점의 가중치를 나타내는 N개의 정수가 주어진다. i번째 정수는 i번 정점의 가중치이다. 이 가중치는 모두

www.acmicpc.net

트리와 K번째 수 문제는 푸는 중이다

 

풀이 보기 전에 어제 풀었던 Component Tree 내용을 이용해 

O(N log^3 N) 풀이를 짰으나 장렬히 시간초과가 난다.

덕분에 LCA 복습했다 ^^

HLD로 비슷하게 할 수 있을 것 같으나 역시 시간초과가 예상된다.

 

잠깐 다른 과목 밸런스 맞추러 갑니다.

한동안 PS에 시간을 쏟아 부었다. 즐겁지만, 더 오래 PS를 하기 위해 다른 과목 간 밸런스를 맞추기로 결심했다.

이제 시간 투자도 체계적으로 할 것이다.

2. 이분그래프에서의 최대 매칭 = 최소 버텍스 커버

www.acmicpc.net/problem/12843

 

12843번: 복수전공

강의의 개수 n (1 ≤ n ≤ 2,000) 과 수업 간 관계의 개수 m 이 첫 줄에 주어진다. 다음 n 줄에 대하여 강의의 번호와 어느 학부의 강의인지 알려준다. 강의의 번호는 1부터 N으로 주어진다. 컴퓨터

www.acmicpc.net

요 문제가 이분매칭이라는 글을 봐서
열심히 풀어봤는데, 아무리 봐도 이분매칭이 될 수가 없는거다. 다른 블로그의 풀이를 봐도 다 납득할 수 없는 말만 적어놨다. 그러던 중. 그린님의 글을 봤고 최소 버텍스 커버라는 키워드를 얻었다.

그걸 타고 넘어가서 갓 kks님의 글을 보는 중 ㅎㅎ

Kőnig's theorem

한국에서는 쾨닉의 정리라 읽는다.

쾨닉의 정리는 이분그래프의 최대 매칭의 수와 최소 버텍스 커버의 크기가 항상 일치한다는 정리다.

이 사실은 다음으로부터 증명된다.

1. 이분그래프의 최대 매칭으로 버텍스 커버를 얻어낼 수 있다.

2. 얻어낸 버텍스의 커버의 크기는 최소다.

 

일단 최대매칭으로부터 버텍스 커버를 얻어내는 방법은 다음과 같다.

주어진 이분그래프 G = {L , R , E}라 하자.

최대 매칭을 M*이라 할 때

{L-M*}에 속한 모든 정점으로부터 "alternating path"를 통해 도달할 수 있는 모든 정점을 X라 하자.

이때 alternating path란 M*에 포함되지 않은 간선, 포함된 간선, 포함되지 않은 간선... 순으로 포함 여부가 alternate하는 경로를 의미한다.

 

이때 C* = (L-X) ∪ (R∩X)가 우리가 구한 버텍스 커버다.

 

1,2 증명 글을 읽어봤는데 정말 어렵다.

추후 때가 되면 다시 도전한다.

3. ACL Library

내 깃허브에 대표적인 자료구조 및 알고리즘 템플릿이 올라와 있다.

그런데! Atcoder에서 만든 ACL Library란게 있더라 ㄷㄷ
atcoder.jp/posts/518

 

AtCoder Library (ACL) - AtCoder

AtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online.

atcoder.jp

진짜 사기다...
수학, 세그, 네트워크 플로우까지 대표적인 알고리즘의 구현이 모두 있다.

구현은 이걸로 공부하자. 매일 하나씩 하자!!
지금은 floor_sum 공부하는 중 - Complete

-> 한 일본인의 블로그에서 증명을 공부했다. rsk0315

 

원조:github.com/yosupo06/library-checker-problems

 

yosupo06/library-checker-problems

The problem data (Test case generator, judge's solution, task, ...) of Library Checker - yosupo06/library-checker-problems

github.com

 

728x90

'PS > Problem Solving' 카테고리의 다른 글

2021년 1월 22일 PS일지  (0) 2021.01.22
If you are a Newbie in Competitive Programming  (3) 2021.01.21
2021년 1월 20일 PS 일지  (0) 2021.01.20
2021년 1월 19일 PS 일지  (1) 2021.01.19
PS일지 중간 점검  (2) 2021.01.18