총평
D: 간단한 그리디
E: 노잼
F: 좋은 Bit DP 기초 문제
A. Large Digits
1 |
|
B. Gentle Pairs
기울기를 실수로 관리하는 이상한 행동은 지양합시다.
1 |
|
C. 1-SAT
std::map 연습
1 |
|
D. Choose Me
각 선거구마다 유세를 할 때 얻는 지지자와 하지 않을 때 빼앗길 지지자를 구합시다.
(유세를 할 때 얻는 지지자) + (하지 않을 때 빼앗길 지지자)가 큰 선거구부터 유세를 하는 것이 최적임을 알 수 있습니다.
1 |
|
E. Through Path
Euler Tour Trick 연습 문제
서브 트리 갱신은 Segment Tree + Lazy Propagation을 사용해도 되고, 단순히 루트에 기록해둔 다음 DFS를 하면서 정답을 구해도 됩니다.
1 |
|
F. Close Group
bit가 Clique인지 여부를 저장하는 배열 Check[bit]
를 전처리합시다. $O(N^2 \cdot 2^N)$에 모두 구할 수 있습니다.
이후, D[bit]
를 정점을 bit처럼 선택했을 때의 정답으로 정의해서 Bit DP를 합시다. 시간 복잡도는 $O(\sum i \cdot {N \choose i})$로 계산할 수 있고, 이항 정리에 의해 $O(3^N)$입니다.
$O(N^2 \cdot 2^N + 3^N)$에 문제를 해결할 수 있습니다.
1 |
|