题目链接 Black Nodes in Subgraphs

题目意思就是在一棵树中所有点标记为两种颜色(黑和白)

然后询问是否存在大小为X恰好有Y个黑点的连通块

这题我们可以用树型背包的方法

设$f[i][j][0]$为以$i$为根的子树中大小为$j$的连通块的黑点数目的最小值,该连通块必须经过$i$

$f[i][j][1]$为以$i$为根的子树中大小为$j$的连通块的黑点数目的最大值,该连通块必须经过$i$

那么转移的时候有

$f[x][i + j][0] = min(f[x][i + j][0], f[x][i][0] + f[u][j][0]);$
$f[x][i + j][1] = max(f[x][i + j][1], f[x][i][1] + f[u][j][1]);$

#include <bits/stdc++.h>using namespace std;#define rep(i, a, b)    for (int i(a); i <= (b); ++i)
#define dec(i, a, b)    for (int i(a); i >= (b); --i)const int N = 5010;
int f[N][N][2], sz[N];
vector <int> v[N];
int T, n, q;
int c[N], F[N], G[N];void dfs(int x, int fa){sz[x] = 1;if (c[x]) f[x][1][0] = f[x][1][1] = 1;else      f[x][1][0] = f[x][1][1] = 0;for (auto u : v[x]){if (u == fa) continue;dfs(u, x);dec(i, sz[x], 1){rep(j, 1, sz[u]){f[x][i + j][0] = min(f[x][i + j][0], f[x][i][0] + f[u][j][0]);f[x][i + j][1] = max(f[x][i + j][1], f[x][i][1] + f[u][j][1]);}}sz[x] += sz[u];}rep(i, 1, sz[x]){F[i] = min(F[i], f[x][i][0]);G[i] = max(G[i], f[x][i][1]);}
}int main(){scanf("%d", &T);while (T--){scanf("%d%d", &n, &q);rep(i, 0, n) v[i].clear();memset(sz, 0, sizeof sz);rep(i, 0, n) rep(j, 0, n) f[i][j][0] = 1 << 27, f[i][j][1] = 0;rep(i, 0, n) F[i] = 1 << 27, G[i] = 0;rep(i, 1, n - 1){int x, y;scanf("%d%d", &x, &y);v[x].push_back(y);v[y].push_back(x);}rep(i, 1, n) scanf("%d", c + i);dfs(1, 0);for (; q--; ){int x, y;scanf("%d%d", &x, &y);puts(F[x] <= y && G[x] >= y ? "Yes" : "No");}}return 0;}

转载于:https://www.cnblogs.com/cxhscst2/p/7115243.html

Codechef Black Nodes in Subgraphs(树型背包)相关推荐

  1. [2017纪中10-26]摘Galo 树型背包

    题面 裸的树型背包.f[i][j]表示i的子树中选了j个的最优值. O(n*k^2)+常数优化代码: #include<iostream> #include<cstdio> # ...

  2. 二叉苹果树(树型DP+背包)

    二叉苹果树 有一棵苹果树,如果树枝有分叉,一定是分2叉(就是说没有只有1个儿子的结点).这棵树共有N个结点(叶子点或者树枝分叉点),编号为1-N,树根编号一定是1. 我们用一根树枝两端连接的结点的编号 ...

  3. dtree和jquery构建树型结构

    对于小型的树型应用来说,dtree是一个不错的选择. 先看一眼dtree给的例子 构造静态树 首先引入css文件和js文件 <link rel="StyleSheet" hr ...

  4. 树型控件TreeView的几种用法

    1 基本用法 void TreeViewDataBind()         {             //首先清除树型控件内的结点             this.TreeView1.Nodes ...

  5. C#实现树型结构TreeView节点拖拽的简单功能,附全部源码,供有需要的参考

    为什么80%的码农都做不了架构师?>>>    应用软件是否好用就体现在一些细节操作上,开发人员是否考虑到了很多细节,例如一个树形结构的数据若不支持拖拽功能那用起来会很糟糕一些,用户 ...

  6. 经典树型表结构之SORT_NO

    为什么80%的码农都做不了架构师?>>>    在以下情况需要对经典树型表的sort_no进行重排序: 1.插入节点(插入子树),需调整节点后所有sort_no; 2.删除节点(删除 ...

  7. 【唠叨两句】如何将一张树型结构的Excel表格中的数据导入到多张数据库表中...

    小弟昨天遇到一个相对比较棘手的问题,就像标题说的那样.如何将一张树型结构的Excel表格中的数据导入到多张数据库表中,在现实中实际是七张数据库表,这七张表之间有着有着相对比较复杂的主外键关系,对于我这 ...

  8. 数据中心网络架构 — 传统数据中心网络 — 胖树型三层网络架构

    目录 文章目录 目录 胖树型(Fat-Tree)网络架构 Fat-Tree 是一种无带宽收敛的网络架构 Fat-Tree 的网络拓扑 Fat-Tree 的缺点 胖树型(Fat-Tree)网络架构 为了 ...

  9. 数据中心网络架构 — 传统数据中心网络 — 传统树型三层网络架构

    目录 文章目录 目录 数据中心组网架构 传统三层网络架构 核心层(Core Layer) 汇聚层(Aggregation Layer) 接入层(Access Layer) 三层网络架构的设计原则 三层 ...

  10. 树型权限管理插件:jQuery Tree Multiselect详细使用指南

    1.认识jQuery Tree Multiselect 这个插件允许用户以树型的形式来呈现列表复选框的选择.多用于权限管理中用于分配不同的权限.使用文档,请参考:      https://githu ...

最新文章

  1. 「SAP技术」SE16和SE16N修改后台表数据方法
  2. mysql免安装版的问题
  3. sql server 存储过程 SET NOCOUNT ON?
  4. Android为TV端助力 转载:Java 泛型
  5. ddm模型公式_简单判断目前行情——从股利贴现模型切入
  6. mysql+inser+select_解析MySQL中INSERT INTO SELECT的使用
  7. Cloud一分钟 | 苹果更新“隐私页面”;中国联通大数据正式升级,进入数智新阶段...
  8. CISO的真正挑战:密码管理、IoT安全合规性
  9. 新的生活,新的工作,新的挑战
  10. python3 文本处理_解决python3 写入中文文本查看为乱
  11. Linux无线网络实用工具Top 10
  12. 在Ubuntu系统中给应用创建快捷方式
  13. PCB线宽过流能力估算
  14. Hudi-Flink SQL实时读取Hudi表数据
  15. Linux_admin-练习
  16. 心血管疾病:评估驾驶适应性(英国DVLA)
  17. PN结——“耗尽层”?
  18. 【学习打卡 Free-Excel 】Task9 数据透视
  19. 解决Android v4、v7包导入标红问题import android.support.v4.app.ActivityCompat;import android.support.v7.app
  20. 管理学总论之管理者的角色和技能

热门文章

  1. 手把手教你使用R语言做评分卡模型
  2. 数塔问题-------给你有哪些启示?
  3. taskfactory默认执行慢的问题
  4. 20155336虎光元 Exp1PC平台逆向破解及Bof基础实践
  5. [jquery]高级篇--获取div子元素
  6. 第五篇:白话tornado源码之褪去模板的外衣
  7. intellij常用快捷键
  8. 谷歌在招什么样的人?
  9. 为什么用共有属性来封装私有变量
  10. windows下安装rabbitmq以及php扩展amqp