当前位置: 首页 > news >正文

动态规划(算法竞赛、蓝桥杯)--树形DP树形背包

1、B站视频链接:E18 树形DP 树形背包_哔哩哔哩_bilibili

8b088b3da56746bf9b42b193d53fb30f.png

76edf517781244a6a412813143325d96.png

39143d27eb634f47992beb1b446effc3.png

#include <bits/stdc++.h> 
using namespace std;
const int N=110;
int n,V,p,root;
int v[N],w[N]; 
int h[N],to[N],ne[N],tot; //邻接表
int f[N][N];void add(int a,int b){to[++tot]=b;ne[tot]=h[a];h[a]=tot;
}
void dfs(int u){for(int i=v[u];i<=V;i++) f[u][i]=w[u];for(int i=h[u]; i; i=ne[i]){  //子节点 int s=to[i];dfs(s);for(int j=V;j>=v[u];j--)    //体积for(int k=0;k<=j-v[u];k++)//决策f[u][j]=max(f[u][j],f[u][j-k]+f[s][k]);}
}
int main(){cin>>n>>V;              //物品个数,背包容量for(int i=1;i<=n;i++){cin>>v[i]>>w[i]>>p;   //体积,价值,依赖的物品编号if(p==-1) root=i;else add(p,i);}dfs(root);cout<<f[root][V];return 0;
}

2、题目链接:[CTSC1997] 选课 - 洛谷

4d4177d23497488fb90000da4e25d6ce.png

#include <bits/stdc++.h> 
using namespace std;
const int N=305;
vector<int> e[N]; //邻接表
int n, m, w[N];
int f[N][N];void dfs(int u){f[u][1]=w[u];for(auto v : e[u]){         //子节点dfs(v);for(int j=m+1; j>=1; j--) //课程数for(int k=0; k<j; k++)  //决策f[u][j]=max(f[u][j],f[u][j-k]+f[v][k]);}
}
int main(){scanf("%d%d",&n,&m);for(int i=1; i<=n; i++){int k; scanf("%d%d",&k,&w[i]);e[k].push_back(i);}dfs(0); //虚拟根节点0printf("%d",f[0][m+1]);return 0;
}

[NOIP2006 提高组] 金明的预算方案 - 洛谷

 

http://www.lryc.cn/news/311010.html

相关文章:

  • electron打包前端项目
  • 2.1基本算法之枚举7647:余数相同问题
  • 求最短路径之迪杰斯特拉算法
  • python大学社团管理系统开发文档
  • leetcode 1328.破坏回文串
  • 重学SpringBoot3-自动配置机制
  • sql基本语法+实验实践
  • Node.js中的并发和多线程处理
  • node.js 封装分页查询
  • iptables 基本使用
  • 食品笔记()
  • C++入门和基础
  • 一些C语言知识
  • 代码工具APEX的入门使用(未包含安装)
  • 负载均衡.
  • Git 指令深入浅出【2】—— 分支管理
  • 工作流/任务卸载相关开源论文分享
  • 为什么要用Python?
  • 北京大学发布,将试错引入大模型代理学习!
  • Java 设计模式
  • Kivy和BeeWare 开发APP的优缺点,及其发展历史
  • C++递推
  • C++ 面试题
  • MySQL之索引详解
  • Java面试题总结8:springboot
  • Android 4.4 以下,OkHttp访问Https报错,设置了sslSocketFactory仍无效的解决方法
  • 如何扫码查看企业介绍及填写招聘表?招聘二维码在线生成的方法
  • 如何限制一个账号只在一处登陆
  • 日常工作总结
  • Android Activity启动模式