zoukankan      html  css  js  c++  java
  • 洛谷——P3018 [USACO11MAR]树装饰Tree Decoration

    P3018 [USACO11MAR]树装饰Tree Decoration

    比较水的一道树上模拟水题,更新每个点的价值为以这个点为根的子树中的价值最小值,同时更新以每个节点为根的$sum$值,即以这个节点为根的子树的礼物数,

    如果$sum$值小于自身所规定数,就用最小值来计算剩余价值。

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    
    #define N 1000000
    #define inf 0x7fffffff
    #define LL long long
    using namespace std;
    
    LL n,val[N],d[N],f[N],s[N];
    LL ans; 
    LL head[N],tot;
    struct node{
        LL to,next;
    }e[N];
    
    void add(LL u,LL v){
        e[++tot].to=v,e[tot].next=head[u],head[u]=tot;
    }
    
    void dfs(LL u){
        for(LL i=head[u];i;i=e[i].next){
            LL v=e[i].to;
            if(v==f[u]) continue;
            dfs(v);
            val[u]=min(val[u],val[v]);
            s[u]+=s[v];
        }
        if(s[u]<d[u]) ans+=(d[u]-s[u])*val[u],s[u]=d[u];
    }
    
    
    int main()
    {
        scanf("%lld",&n);
        for(LL i=1;i<=n;i++){
            scanf("%lld%lld%lld",&f[i],&d[i],&val[i]);
            add(i,f[i]),add(f[i],i);
        }
        for(LL i=1;i<=n;i++){
            if(f[i]==-1){
                dfs(i);
                printf("%lld
    ",ans);
                break;
            }
        }
        
        return 0;
    }
  • 相关阅读:
    experiment 2
    experiment 5
    php 代码审计之变量覆盖
    experiment 4
    experiment 3
    experiment 1
    2018铁三测评WP
    Lesson 1
    实验四、决策树算法及应用
    实验三 朴素贝叶斯算法及应用
  • 原文地址:https://www.cnblogs.com/song-/p/9784203.html
Copyright © 2011-2022 走看看