码迷,mamicode.com
首页 > 其他好文 > 详细

luogu1270 “访问”美术馆 树形dp

时间:2018-11-26 23:16:58      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:space   bsp   style   tar   include   lse   return   oid   code   

传送门

树形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\n", f[0][s - 1]); //注意读题 警察在s秒抓到他,所以他必须最迟在s - 1秒中时结束
    
    return 0;
}

 

luogu1270 “访问”美术馆 树形dp

标签:space   bsp   style   tar   include   lse   return   oid   code   

原文地址:https://www.cnblogs.com/Fo0o0ol/p/10023343.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!