백준 1234 / C++
https://www.acmicpc.net/problem/1234 1234번: 크리스마스 트리 첫째 줄에 트리의 크기 N, 빨강의 개수, 초록의 개수, 파랑의 개수가 주어진다. N은 10보다 작거나 같다. 빨강, 초록, 파랑의 개수는 0보다 크거나 같고, 100보다 작거나 같다. www.acmicpc.net [ 풀이 ] dp[h][r][g][b]를 h높이를 채울 것이고 지금까지 r, g,b만큼 색상을 쓴 경우의 수라고 하자. 상태전이는 다음과 같다. 1. 한 색으로 h칸을 모두 칠한다. : dp[h+1][r+h][g][b] 로 전이 (g, b도 마찬가지) 2. h가 짝수면 두개를 골라 절반씩 칠한다. : dp[h+1][r+h/2][g+h/2][b] * h!/(h/2)!(h/2)! 로 전이 (g, b도 마..
2022. 8. 8.
세그먼트 트리 코드
아래 코드에서 적절히 트리의 식만 변형해주면 구간 최대,최소,합,곱 세그트리를 만들어줄 수 있다. 세그트리는 복붙보단 매번 직접 짜는걸 추천한다. [ Code ] const int MAX = 100001; struct segment_tree { int tree[4 * MAX]; void upd(int node, int s, int e, int idx, int v) { if (idxe) return; if (s == e) { tree[node] = v; return; } int m = (s + e) / 2; upd(2 * node, s, m, idx, v); upd(2 * node + 1, m + 1, e, idx, v); tree[node] = tree[2 * node] + tree[2 * node + ..
2022. 8. 7.