Processing math: 100%
알고리즘 블로그
article thumbnail
[트리에 관하여 1: Tree DP] Square-order tree DP ★

이 블로그의 "트리에 관하여" 시리즈의 첫 번째 카테고리, ❮Tree DP❯에서 다루는 첫 번째 주제이다. 이 테크닉은 다른 이름으로도 알려져 있다. KOI에 출제된 어떤 유명한 문제의 이름을 딴 것인데, 스포일러가 될 수 있으므로 연습 문제 목차에서 후술 하겠다. Square-order tree DP?사실 이건 그 자체로 뭔가 해야 하는 테크닉은 아니다. 트리 DP 점화식이 2차원으로 나오고, 전이 과정을 합쳐서 대충 보기에는 O(n3)의 시간 복잡도를 가져야 할 것으로 보이는 후술 할 조건을 만족하는 알고리즘이 사실 O(n2)이라는 더 좋은 시간 복잡도를 갖는다는 사실을 이용하는 테크닉이다. 만족해야 하는 조건은 구한 점화식 dp(x,y)에 대해, x가 각 노드를 뜻하고..

article thumbnail
[Coder's High 2014] Tons Of Damage
PS 문제들 2023. 2. 9. 20:57

문제 링크 적당히 타격감있는 기댓값 DP 문제다. divide by zero 예외를 놓치면 틀릴 수 있다. #include using namespace std; using ii = pair; using ll = long long; #define rep(i,a,b) for (auto i = (a); i = (a); --i) #define all(x) begin(x), end(x) #define siz(x) int((x).size()) #define Mup(x,y) x = max(x,y) #define mup(x,y) x = min(x,y) #define fi first #define se second #define dbg(...) fprintf(stderr,__VA_ARGS__) using ld = lon..

article thumbnail
[BOJ 1328] 고층 빌딩 ★
PS 문제들 2022. 9. 12. 13:07

문제 링크질문은 언제나 환영입니다.3가지 풀이법이 나오네요. 글에는 없는 자신만의 풀이법이 존재하신다면 알려주세요!두 가지 풀이법은 O(n3)짜리 풀이이고, 한 가지 풀이법은 O(n2)짜리입니다.풀이더보기문제에서 구해야 하는 것은 조건을 만족하는 배치의 수입니다.세세한 배치의 성질들에 대해 알아볼 방법은 떠오르지 않고, 작은 케이스부터 풀다 보면 패턴이 보이기 때문에 동적 계획법을 시도해볼 수 있습니다. 3차원 동적 계획법B(x,y,z):=x개의 빌딩 중 왼쪽에서 y개, 오른쪽에서 z개만 보이는 경우의 수위와 같이 정의하는 것은 아주 자연스럽습니다. 점화식을 도출할 때는 B(x1,)와의 관계를 우선 생각 해봅시다.새로 생긴 가장 긴 막대기를 어디다 꽂아 넣을지를 고..

article thumbnail
[KOI 2021 1차 중등부] 두 개의 팀 ★
PS 문제들 2022. 5. 16. 02:25

문제 링크재밌는 트리 DP 문제였다.편의상 각 사원 i의 실력을 Vi, 부모를 Pi라고 하자.Subtask: Vi>0 (17점)더보기그냥 최대한 많이 포함하면 이득이다.그런데, 한 팀의 팀장을 전체 트리의 루트로 잡아버리면 다른 팀이 만들어질 수 없다.또한, 루트의 k대 독자 후손 노드도 잡아버리면 다른 팀이 만들어질 수 없다. 따라서 1번 노드에서부터 DFS를 돌리다가 처음으로 자식 노드가 2개 이상이 된다면 가장 큰 2개만 골라주면 된다.필자의 코드이다.Subtask: N5 000, Pi=i1 (12점)더보기직선형 그래프에서 문제를 풀면 된다.Kadane 알고리즘과 꽤 비슷하다.각 노드 i마다 ikjVk가 최대가 되게 하..