这个题用优化后的依赖背包做难以实现,所以用常规的泛化物品的和来做即可

每个节点的容量定义为这个节点下的叶子结点个数,dp[u][j]用来表示节点u下选取j个物品的最大收益,最后从m-0查询dp[1][i],一旦发现是非负数,i则是答案

需要注意的地方:初始化时将所有的dp[i][0]都赋值为0,一个都不选,代价当然是0

        dfs遇到u是叶子结点,那么dp[u][1]定义为这个结点的权值,其余状态用-inf来表示不可达

        其余状态全部赋初始值为-inf,表示目前不可达

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define N 3005
struct Edge{int to,nxt,w;}e[N<<];
int head[N],tot,n,m;
void add(int u,int v,int w){
e[tot].to=v;e[tot].nxt=head[u];e[tot].w=w;head[u]=tot++;
}
int dp[N][N],a[N],size[N];
void dfs1(int u,int pre){
for(int i=head[u];i!=-;i=e[i].nxt){
int v=e[i].to;
if(v==pre)continue;
dfs1(v,u);size[u]+=size[v];
}
}
void dfs2(int u,int pre){
if(a[u]){dp[u][]=a[u];return;}
for(int i=head[u];i!=-;i=e[i].nxt){
int v=e[i].to;
if(v==pre)continue;
dfs2(v,u);
for(int j=size[u];j>=;j--)
for(int k=;k<=size[v];k++)
dp[u][j]=max(dp[u][j],dp[v][k]-e[i].w+dp[u][j-k]);
}
}
int main(){
memset(head,-,sizeof head);
cin>>n>>m;
for(int i=;i<=n-m;i++){
int k,v,w;cin>>k;
while(k--){
cin>>v>>w;
add(i,v,w);add(v,i,w);
}
}
for(int i=n-m+;i<=n;i++)
cin>>a[i],size[i]=;
memset(dp,-0x3f,sizeof dp);
for(int i=;i<=n;i++)dp[i][]=;
dfs1(,);dfs2(,); for(int i=m;i>=;i--)
if(dp[][i]>=){
cout<<i<<endl;
break;
}
}

最新文章

  1. JMeter学习-034-JMeter调试工具之一---HTTP Mirror Server
  2. 初识ReactJs(一)
  3. express-12 Cookie与会话
  4. eclipse项目导入androidstudio
  5. json format validator
  6. hdu---(Tell me the area)(几何/三角形面积以及圆面积的一些知识)
  7. ubuntu下设置开机自启动项
  8. 低压差稳压器AMS1585
  9. VS2005 MFC 预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)
  10. Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建
  11. JS和JQuery中的事件托付 学习笔记
  12. 在Docker中体验数据库之Microsoft SQL Server
  13. [翻译 EF Core in Action] 1.5 关于NoSql
  14. 在.net core web项目中生成二维码
  15. D3
  16. idea生成类注释和方法注释的正确方法
  17. localStorage单页面及不同页面监听变动
  18. Linux常用基本命令(head)
  19. dvwa 源码分析(四) --- dvwaPhpIds.inc.php分析
  20. e663. 在gif图像中获取透明和色彩的数量

热门文章

  1. Dubbox服务的提供方开发
  2. 从 Server Timing Header 看服务器是如何处理请求的
  3. python爬虫(2):图片,翻译爬虫
  4. jQuery与Vue的区别、从jQuery到Vue框架优点总结
  5. 获取min-max之间的随机数
  6. PHP FILTER_SANITIZE_STRIPPED 过滤器
  7. MyEclipse6.0中使用aptana插件,添加jquery提示功能
  8. linux jps命令
  9. 为什么TCP 会粘包断包UDP不会
  10. PHP简单读取XML