算法课程笔记——自下而上树形DP

算法课程笔记——自下而上树形DP

#include<bits/stdc++.h>usingnamespacestd;
constintN=100005;
intn,a[N];
longlongdp[N][2];
vector<int> e[N];
voiddfs(intu){
    for(autov:e[u])
    {
        dfs(v);
        dp[u][1]+=dp[v][0];
        dp[u][0]+=max(dp[v][0],dp[v][1]);
    }
    dp[u][1]+=a[u];
}
intmain(){
    cin>>n;
    set<int> st;
    for(inti=1;i<=n;i++) cin>>a[i],st.insert(i);
    for(inti=1,x,y;i<n;++i)
    {
        cin>>x>>y;
        e[y].push_back(x);
        st.erase(x);
    }
    intrt=*st.begin();
    dfs(rt);
    cout<<max(dp[rt][0],dp[rt][1]);
    return0;
}
#include<bits/stdc++.h>usingnamespacestd;
constintN=100005;
vector<int>e[N];
intval[N],dp[N][2];
intd[N];
intn, m, k;
voiddfs(intu,intfa){
    for(autov:e[u])
    {
        if(v==fa) continue;
        dfs(v,u);
        dp[u][0]+=dp[v][1];
        dp[u][1]+=min(dp[v][0],dp[v][1]);
    }
    dp[u][1]+=1;
}
intmain(){
    cin.tie(0);
    cout.tie(0);
    ios::sync_with_stdio(0);
    cin>>n;
    for(inti=1,x,y;i<n;++i)
    {
        cin>>x>>y;
        e[x].push_back(y);
        e[y].push_back(x);
    }
    dfs(1,0);
    cout<<min(dp[1][0],dp[1][1]);
    return0;
}

#include<bits/stdc++.h>usingnamespacestd;
constintN=100005;
vector<int>e[N];
longlonga[N],dp[N][3];
intd[N];
intn;
voiddfs(intu){
    longlongminn=1e18;
    for(autov:e[u])
    {
        dfs(v);
        dp[u][0]+=min({dp[v][0],dp[v][1],dp[v][2]});
        dp[u][1]+=min(dp[v][0],dp[v][1]);
        minn=min(minn,dp[v][0]-min(dp[v][0],dp[v][1]));
        dp[u][2]+=dp[v][1];
    }
    dp[u][0]+=a[u];
    dp[u][1]+=minn;
}
intmain(){
    cin.tie(0);
    cout.tie(0);
    ios::sync_with_stdio(0);
    cin>>n;
    for(inti=1;i<=n;++i)
    {
        intid,m;
        cin>>id;
        cin>>a[id];
        cin>>m;
        while(m--)
        {
            intx;
            cin>>x;
            e[id].push_back(x);
            d[x]++;
        }
    }
    intrt;
    for(inti=1;i<=n;++i)
        if(d[i]==0) rt=i;
    dfs(rt);
    cout<<min(dp[rt][0],dp[rt][1]);
    return0;
}

相关推荐

  1. 算法笔记树形DP算法总结

    2024-05-14 06:12:04       23 阅读
  2. 算法刷题day39:树形DP

    2024-05-14 06:12:04       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-14 06:12:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-14 06:12:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-14 06:12:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-14 06:12:04       18 阅读

热门阅读

  1. MASK-RCNN自定义数据集优化思路(pytorch)

    2024-05-14 06:12:04       10 阅读
  2. ffmpeg

    2024-05-14 06:12:04       11 阅读
  3. Vue2 实现前端分页

    2024-05-14 06:12:04       8 阅读
  4. Element-UI快速入门

    2024-05-14 06:12:04       11 阅读
  5. 人大金仓参数查看和设置

    2024-05-14 06:12:04       10 阅读
  6. 记录解决问题--redis ssl连接

    2024-05-14 06:12:04       8 阅读
  7. MySQL中的多表设计

    2024-05-14 06:12:04       8 阅读
  8. 【PyTorch】torch.distributed()的含义和使用方法

    2024-05-14 06:12:04       9 阅读