博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj 5072
阅读量:4502 次
发布时间:2019-06-08

本文共 1843 字,大约阅读时间需要 6 分钟。

对于某一大小的连通子图包含的黑点的数目的最大值和最小值都能取到

考虑树形dp
$f[i][j]$ 表示从 $i$ 的子树中选出大小为 $j$ 的联通子图黑点数目的最小值
$g[i][j]$ 表示从 $i$ 的子树中选出大小为 $j$ 的联通子图黑点数目的最大值
树形dp转移

#include 
const int N = 5010;#define gc getchar()inline int read() { int x = 0; char c = gc; while(c < '0' || c > '9') c = gc; while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = gc; return x;}int head[N], cnt;struct Node { int u, v, nxt;} G[N << 1];int n, q;int v[N];int f[N][N], g[N][N];int size[N];inline void Add(int u, int v) {G[++ cnt].v = v; G[cnt].nxt = head[u]; head[u] = cnt;}void Dfs(int x, int fa) { size[x] = 1, f[x][1] = g[x][1] = v[x]; for(int i = head[x]; ~ i; i = G[i].nxt) { int v = G[i].v; if(v != fa) { Dfs(v, x); for(int j = size[x]; j >= 1; j --) { for(int k = size[v]; k >= 1; k --) { f[x][j + k] = std:: min(f[x][j + k], f[x][j] + f[v][k]); g[x][j + k] = std:: max(g[x][j + k], g[x][j] + g[v][k]); } } size[x] += size[v]; } } for(int i = 1; i <= n; i ++) { f[0][i] = std:: min(f[0][i], f[x][i]); g[0][i] = std:: max(g[0][i], g[x][i]); }}int main() { int t = read(); for(; t; t --) { cnt = 0; memset(f, 0x3f, sizeof f); memset(g, 0xc0, sizeof g); n = read(); q = read(); for(int i = 1; i <= n; i ++) head[i] = -1; for(int i = 1; i < n; i ++) { int u = read(), v = read(); Add(u, v), Add(v, u); } for(int i = 1; i <= n; i ++) v[i] = read(); Dfs(1, 0); for(; q; q --) { int x = read(), y = read(); if(f[0][x] <= y && y <= g[0][x]) puts("YES"); else puts("NO"); } puts(""); } return 0;}

 

转载于:https://www.cnblogs.com/shandongs1/p/9459712.html

你可能感兴趣的文章
python webdriver 测试框架-数据驱动txt文件驱动,带报告的例子
查看>>
动态代理相对于静态代理的优势
查看>>
持续部署之jenkins与gitlab(三)
查看>>
第二章 Jenkins安装与配置
查看>>
POJ 3169 Layout 差分约束系统
查看>>
用动画切换按钮的状态
查看>>
JNI简易教程,windows and linux
查看>>
php addslashes() 函数
查看>>
bzoj 1031: [JSOI2007]字符加密Cipher
查看>>
python 常用算法学习(2)
查看>>
(译)JToken的层次结构
查看>>
PostgreSQL 各个后台进程关系的理解
查看>>
PostgreSQL在何处处理 sql查询之四十二
查看>>
网络流 dinic
查看>>
如何招到一个靠谱的程序员
查看>>
#pragma 预处理指令详解
查看>>
深度解析VC中的消息(上)
查看>>
通过迷宫问题归纳回溯法
查看>>
python相关软件安装流程图解——linux 安装python3——Python-3.7.1
查看>>
hdoj-1276-士兵队列训练问题(队列模拟)
查看>>