// Problem: P1273 有线电视网 // Contest: Luogu // URL: https://www.luogu.com.cn/problem/P1273 // Memory Limit: 125 MB // Time Limit: 1000 ms // Created by Herio #include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 3e3+5; const int inf...
P1273 有线电视网(树形动规,分组背包) 题目链接: https://www.luogu.org/problemnew/show/P1273 题目描述 某收费有线电视网计划转播一场重要的足球比赛。他们的转播网和用户终端构成一棵树状结构,这棵树的根结点位于足球比赛的现场,树叶为各个用户终端,其他中转站为该树的内部节点。 从转播站到转播站以及从转播...
题目传送门:P1273 有线电视网 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目: 思路:这题其实就是 有依赖的背包+分组背包 意思就是一棵树,边权就是花费,点权就是赚的费用,求包括以根结点为根的子树,使得他连接的用户最多。所以我们构建DP[I][J]二维DP,显然这是一个有依赖的分组背包问题,I就代表...
所以特判一下 dfs(v,pos); sum[pos]+=sum[v];//判断子树中有多少个用户 for(int j=sum[pos];j>=0;j--)//子树中用户数就是容量 { for(int k=1;k<=sum[v];k++)//每组元素,就是该子节点用户数分配方案 { if(j>=k) dp[pos][j]=max(dp[pos][j],dp[pos][j-k]+...
【题解】洛谷P1273 有线电视网(树上分组背包) 次元传送门:洛谷P1273 思路 一开始想的是普通树形DP 但是好像实现不大好 观摩了一下题解 是树上分组背包 设f[i][j]为以i为根的子树中取j个客户得到的总价值 我们可以以i为根有j组 在每一组中分别又取1个,2个,3个...n个客户 化为...
【DP专题】——洛谷P1273有线电视网 树形dp板子。 传送门:GO 用dp[i][j]表示以i为根的子树中选取j个观众能赚到的最多钱(经典模型)。 那么,dp[i][j+k]=max(dp[son[i]][k]+dp[i][j]-w,dp[i][j+k]),意思是说,如果在子树中选了k个观众,那么答案就是(当前只选了j个的情况+选子树中k个...
【洛谷P1273】有线电视网 题目大意:给定一棵 N 个节点的有根树,1 号节点为根节点,叶子节点有点权,每条边有边权,每经过一条边都减去该边权,每经过一个节点都加上该点权,求在保证权值和为非负数的前提下最多能经过多少个叶子节点。 题解:dp[u][i]dp[u][i]表示在以 u 为根节点的子树中,经过 i ...
洛谷P1273 有线电视网 题解 题面 按照常见树形背包定义状态:设dp[u][j]表示在以u为根的子树中,选择j个客户所能获得的最大收益。 状态转移:dp[u][j]=max(dp[u][j-k],dp[v][k]-w(u,v)); 注意因为二维的是滚动数组,所以应该倒着循环。
题目链接:洛谷 P1273 有线电视网 题目大意: 在一棵给定的带权树上取尽量多的叶子节点,使得sigma(val[选择的叶子节点])-sigma(cost[经过的边])>=0 解法: 树状DP 背包DP DP[i][j]表示i号节点为根的子树中选择了j个叶子节点所得到的最大利润
[P1273]有线电视网 Link: P1273 传送门 Solution: 比较裸的树形dpdp 令dp[i][j]dp[i][j]表示以ii为根的子树中选jj个叶子的最小代价 最后找到使得dp[1][k]≥0dp[1][k]≥0的最大kk即可 Code: #include <bits/stdc++.h>usingnamespacestd;constintMAXN=3005;structedge{intnxt,to;}e[MAXN<<...