2021. 3. 4. 06:31ㆍ알고리즘 문풀/BOJ 연습
글 쓰는 법을 까먹을 것 같으니, 몇 개 되지 않는 문제들을 줏어담아보자.
BOJ 20556. 둥둥섬 다리 재정비하기
20556번: 둥둥섬 다리 재정비하기
첫 줄에 섬의 수 과 쿼리의 수 가 주어진다. 이후 개의 줄에 걸쳐 다리들이 연결하는 두 섬 와 가 공백으로 구분되어 주어진다. 이후 개의 줄
www.acmicpc.net
루트가 로 고정되어 있다고 할 때, 개의 다리를 재정비해서 얻을 수 있는 최적의 결과는 가장 큰 개 서브트리의 크기 합이라는 사실을 간단하게 알 수 있다. 따라서 "가장 큰 개의 합"이 지원되는 자료구조에 서브트리들의 크기들을 전부 넣고 다니면 되고, 이건 segment tree나 fenwick tree로 된다. 루트가 바뀌는 경우에는 관리해야 하는 서브트리 크기들이 바뀌는데, 이 변화는 Persistent Segment Tree로 충분히 관리해줄 수 있다.
BOJ 18746. Exp
18746번: Exp
Find the expected amount of experience a hero will get for beating n monsters one by one, given that beating each monster gives the hero i units of experience (0 ≤ i ≤ k) with probability pi independently, but if the hero gets more than x units of expe
www.acmicpc.net
차수가 로 작은 다항식 가 있고, 의 계수들을 구하는 문제다.
편의상 이라고 두자. 이라고 두면 가 성립한다. 으로 변형하고 각 항의 계수를 비교하면
정도로 생겨먹은 식이 나온다. (문제를 풀 때 이용한 식과 다르며, 계산 오류가 있을 수 있다) 그런데 정도만 의미 있으니 저 식을 이용하여 의 차항 계수를 시간에 계산할 수 있다.
BOJ 17440. 코포빵 토너먼트
17440번: 코포빵 토너먼트
i회 대회에서 참가자들을 모든 가능한 순서가 선택될 확률이 동일하도록 임의의 순서로 세웠다고 할 때, 그 대회의 기록자가 적었을 숫자 개수의 기댓값은 Pi / Qi (Pi, Qi는 서로소인 0 이상의 정
www.acmicpc.net
그냥 할 일이 많은 문제다. Linearity of Expectation을 적용해서 각 노드에 대해 문제를 따로 풀면 되고, 답의 기댓값을 "답이 이상일 확률의 합"으로 푸는 트릭도 유명하고, 확률문제는 이항계수 써서 식을 전개하고...
Csacademy round 72. Diamond Dogs
CS Academy
csacademy.com
Distinct한 수들 이 일렬로 있을 때, 각 구간 마다 의 순서를 비교하는 문제이다. 구간 을 비교하기 위해서는 각각 을 비교하면 되고, 수들이 distinct하다는 조건 때문에 두 집합의 max값끼리만 비교하면 된다. Sparse table로 미리 만들어두면 상수 시간에 두 집합의 비교가 가능하다. 전체 시간복잡도는 .
BOJ 17421. 빗물이 넘쳐흘러
17421번: 빗물이 넘쳐흘러
정우가 살고있는 마을은 분지(주위가 산지로 둘러싸여 주변보다 낮은 지형)이다. 한가로이 낮잠을 즐기던 정우는 마을의 왼쪽으로부터 물이 흘러 들어오고 있는 것을 보았다! 정우가 일찍 발
www.acmicpc.net
바닥면을 기준으로 "물 덩어리"들이 들어갈 컴포넌트들을 정점으로 하는 트리로 만들 수 있다. 자식 정점은 언제나 부모 정점보다 먼저 물이 차며, 두 개 이상의 자식을 가진 컴포넌트에 물이 차면 컴포넌트가 하나로 합쳐지는 식이다.
컴포넌트는 언제나 늘어날 때 하나씩 늘어나기 때문에, 컴포넌트가 줄어들면서 개가 되는 순간을 고려할 필요는 없다. 이 사실을 파악하고 DFS를 돌리면 문제를 해결할 수 있다.
'알고리즘 문풀 > BOJ 연습' 카테고리의 다른 글
BOJ 21268 Do Use FFT (0) | 2025.01.31 |
---|---|
BOI 2016 Swap (0) | 2025.01.22 |
BOJ 10129 작은 새 (0) | 2020.02.10 |
BOJ 17962 Game on a Tree + BOJ 3419 Racing Car Trail (0) | 2020.01.28 |
BOJ 13318 위험한 해싱 (0) | 2020.01.19 |