luogu1270 “访问”美术馆 树形dp

Posted fo0o0ol

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了luogu1270 “访问”美术馆 树形dp相关的知识,希望对你有一定的参考价值。

传送门

树形dp

f[i][j] - 到i号点,已经j时间了的最大偷画数

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define rep(i, a, b) for(int i = a; i <= b; ++i)

const int N = 107;
const int S = 607;

int s, n, f[N][S]; 

void dfs(int u) {
    int time, paint;
    scanf("%d%d", &time, &paint);
    if (!paint) {
        int L = ++n, r = ++n;
        dfs(L), dfs(r);
        rep(i, time * 2 + 1, s - 1) rep(j, 0, i - time * 2) {
            f[u][i] = max(f[u][i], f[L][j] + f[r][i - j - time * 2]);
        }
    }
    else {
        rep(i, time * 2 + 1, s - 1) {
            f[u][i] = min((i - time * 2) / 5, paint);
        } 
    }
}

int main() {
    scanf("%d", &s);
    
    dfs(0);
    
    printf("%d
", f[0][s - 1]); //注意读题 警察在s秒抓到他,所以他必须最迟在s - 1秒中时结束
    
    return 0;
}

 

以上是关于luogu1270 “访问”美术馆 树形dp的主要内容,如果未能解决你的问题,请参考以下文章

luogu P1270 "访问"美术馆 树dp

P1270 “访问”美术馆(树形dp)

P1270 “访问”美术馆(树形dp)

洛谷 P1270 “访问”美术馆(树形DP)

P1270 “访问”美术馆

题解 P1270 “访问”美术馆