결과
CDF 풀고, E를 못 풀었습니다.
F는 정말 좋은 문제인 것 같습니다.
C. Scc Puzzle
S 1개와 C 2개를 묶어줍시다. C가 남았다면 C 4개를 묶어줍시다.
1 |
|
D. Menagerie
인접한 3마리의 동물의 종만 결정해주면 다른 동물들의 종을 모두 결정해줄 수 있습니다.
다른 동물들의 종을 정해주는 과정에서 모순이 생긴다면 인접한 3마리의 동물의 종을 다른 조합으로 시도해보면 됩니다.
$O(N)$짜리 프로세스를 최대 8번 진행하면 문제를 풀 수 있습니다.
1 |
|
E. Frequency
F. Flags
블로그에 따로 풀이를 올린 줄 알았는데 안 올렸네요.
가능한 가장 큰 값을 구하는 문제이니 파라메트릭 서치를 생각해봅시다.
각 깃발을 $x_i$ 혹은 $y_i$에 배치해야하고, 2-SAT을 생각해볼 수 있습니다. 간선을 $O(N^2)$개 만들어서 2-SAT을 하는 것은 생각하기 쉽지만 TLE나기도 쉽습니다. 간선 개수를 줄여야 합니다.
깃발들을 위치 순으로 정렬합시다. 어떤 깃발 $i$를 선택하면 구간 $[s_i, e_i]$ 에 있는 모든 깃발을 선택하면 안 된다고 표현할 수 있습니다.
구간을 $O(\log N)$개의 정점으로 나타내는 유명한 방법으로 세그먼트 트리가 있습니다. 깃발들을 직접 간선으로 잇는 대신, 세그먼트 트리의 정점과 이어주면 $O(N \log N)$개의 간선만 만들어지게 되고, 시간 내에 문제를 해결할 수 있습니다.
1 |
|