题意:

给你一棵由 N 个节点构成的树 T。节点按照 1 到 N 编号,每个节点要么是白色,要么是黑色。有 Q 组询问,每组询问形如 (s, b)。你需要检查是否存在一个连通子图,其大小恰好是 s,并且包含恰好 b 个黑色节点。

输入第一行,包含一个整数 T,表示测试数据组数。对于每组测试数据:

第一行包含两个整数 N 和 Q,分别表示树的节点个数和询问个数。

接下来 N - 1 行,每行包含两个整数 ui 和 vi,表示在树中 ui 和 vi 之间存在一条边。

接下来一行包含 N 个整数,c1, c2, ... , cN。如果 ci 为 0 表示第 i 个节点是白色的,如果 ci 为

1 表示第 i 个节点是黑色的。

接下来 Q 行,每行包含两个整数 si 和 bi,表示一组形如 (si, bi) 的询问。

对于每组询问输出一行字符串表示答案,其中 Yes 表示存在一个符合要求的连

通子图,No 表示不存在。

1 <= T <= 5, 2 <= N <= 5e3, 1 <= Q <= 1e5, 1 <= ui, vi <= N。

0 <= ci <= 1, 0 <= bi <= N, 1 <= si <= N, bi <= si。

分析:

注意到对于一个确定的子树,如果固定取x个点,那么黑色节点的个数是一段连续的区间

所以dp[u][i] dp1[u][i]表示以u为根的子树取i个节点,最少包含dp[u][i]个黑点,最多包含dp1[u][i]个黑点

以dp[u][i]为例

dp[u][i+j]=min(dp[u][i+j],dp[u][i]+dp[v][j])

树形背包的时候注意循环要从大到小(不然会被覆盖)

时间复杂度O(n^2)(不会证复杂度是O(n^2)有待填坑……)

最新文章

  1. ORA-06502:PL/SQL :numberic or value error: character string buffer too small
  2. .NET Core Analysis
  3. ACM HDU 2041--超级楼梯题解
  4. Tomcat 6 --- JNDI详解
  5. JavaScript使用自定义事件实现简单的模块化开发
  6. POJ 1390 Block
  7. LoadRunner 脚本学习 -- 读取文件内容
  8. 文件上传去除&quot;Content-Disposition: form-data&quot;
  9. reverse-XNUCA-babyfuscator
  10. 常用CSS Reset汇总
  11. Unable to boot : please use a kernel appropriate for your cpu
  12. PHP (超文本预处理器)
  13. Swift快速给Cocoa库内置类添加便捷初始化器
  14. C# - 为引用类型重定义相等性
  15. Sql Server 字符串操作总结
  16. 跟踪SQL
  17. 【软件工程1916|W(福州大学)_助教博客】团队第一次作业成绩公示
  18. python根据服务名获取服务启动路径
  19. [py]__name__ 属于哪个文件
  20. libgdx游戏引擎教程

热门文章

  1. 字符串循环右移-c语言
  2. 诊断Java代码中常见的数据库性能热点问题应该这么做!
  3. SAP CRM调查问卷的评分和图表显示功能介绍
  4. iview upload on-format-error 事件 在 before-upload 事件 之后,导致在before里面阻止上传后,监测事件失效,需要自己手工写
  5. 看云&amp;gitbook 写帮助文档 | 专注于文档在线创作、协作和托管
  6. emmm 深入浅出教你看懂现代金融游戏
  7. OpenCV2:第七章 图像处理
  8. SQL语句操作SQL SERVER数据库登录名、用户及权限
  9. layui二次封装
  10. Go:获取命令行参数