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的主要内容,如果未能解决你的问题,请参考以下文章