题目链接  2017 CCPC Harbin

Problem A

Problem B

Problem D

Problem F

Problem L

考虑二分答案。

设当前待验证的答案为x

我们可以把第二个条件转化为在子树中最多有几个点是黑色的。

那么我们可以根据这些条件求出以每个点为根的子树的黑点数范围,做一次dfs。

最后看看根结点的范围是否包含x即可。

#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)
#define MP make_pair
#define fi first
#define se second typedef long long LL;
typedef pair <int, int> PII; const int N = 1e5 + 10; int sz[N];
int T, n;
int lima, limb;
int l, r;
int flag;
int c[N], d[N], cc[N], dd[N];
vector <int> v[N];
PII la[N], lb[N]; void dfs(int x, int fa){
sz[x] = 1;
for (auto u : v[x]){
if (u == fa) continue;
dfs(u, x);
sz[x] += sz[u];
}
} void calc(int x, int fa){
int xx = 0, yy = 1;
for (auto u : v[x]){
if (u == fa) continue;
calc(u, x);
xx += c[u], yy += d[u];
} c[x] = max(c[x], xx);
d[x] = min(d[x], yy);
} bool check(int x){
rep(i, 1, n) c[i] = cc[i], d[i] = dd[i];
rep(i, 1, lima) c[la[i].fi] = max(c[la[i].fi], la[i].se);
rep(i, 1, limb) d[lb[i].fi] = min(d[lb[i].fi], x - lb[i].se);
calc(1, 0);
rep(i, 1, n) if (c[i] > d[i]) return false;
if (x >= c[1] && x <= d[1]) return true; else return false;
} int main(){ scanf("%d", &T);
while (T--){
scanf("%d", &n);
rep(i, 0, n + 1) v[i].clear();
rep(i, 2, n){
int x, y;
scanf("%d%d", &x, &y);
v[x].push_back(y);
v[y].push_back(x);
} rep(i, 0, n + 1) sz[i] = 0;
dfs(1, 0); rep(i, 1, n) cc[i] = 0, dd[i] = sz[i];
flag = 1; scanf("%d", &lima);
rep(i, 1, lima){
scanf("%d%d", &la[i].fi, &la[i].se);
if (sz[la[i].fi] < la[i].se){
flag = 0;
}
} scanf("%d", &limb);
rep(i, 1, limb){
scanf("%d%d", &lb[i].fi, &lb[i].se);
if (n - sz[lb[i].fi] < lb[i].se){
flag = 0;
}
} if ((!flag) || (!check(n))){
puts("-1");
continue;
} l = 0, r = n;
while (l + 1 < r){
int mid = (l + r) >> 1;
if (check(mid)) r = mid;
else l = mid + 1;
} if (check(l)) printf("%d\n", l);
else printf("%d\n", r);
} return 0;
}

  

Problem M

2017 CCPC 哈尔滨站 题解的更多相关文章

  1. HDU 6240 Server(2017 CCPC哈尔滨站 K题,01分数规划 + 树状数组优化DP)

    题目链接  2017 CCPC Harbin Problem K 题意  给定若干物品,每个物品可以覆盖一个区间.现在要覆盖区间$[1, t]$. 求选出来的物品的$\frac{∑a_{i}}{∑b_ ...

  2. 2017 CCPC 哈尔滨站 HDU 6242

    Geometry Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Other ...

  3. 2017 ccpc哈尔滨 A题 Palindrome

    2017 ccpc哈尔滨 A题 Palindrome 题意: 给一个串\(T\),计算存在多少子串S满足\(S[i]=S[2n−i]=S[2n+i−2](1≤i≤n)\) 思路: 很明显这里的回文串长 ...

  4. 2021 CCPC 威海站 VP记录(题解)

    2021 CCPC 威海站 VP记录(题解) 题目顺序为vp时开题顺序: A - Goodbye, Ziyin! 签到,连边数小于等于2的可以作为二叉树根,若有大于4的直接输出0. code: voi ...

  5. ccpc杭州站 赛后总结

    Ccpc杭州站赛后总结 2017年11月4号五号,我参加了ccpc杭州站的比赛,我的队友是聂少飞和王艳,在4号一点半,举行了比赛开幕式,听着教练代表的发言,听着参赛选手代表的发言,听着志愿者的发言,都 ...

  6. 2018 CCPC 吉林站 H Lovers

    2018 CCPC 吉林站 H Lovers 传送门:https://www.spoj.com/problems/LIS2/en/ 题意: q次操作 1.将第l~r个数的左边和和右边都加上一个数d, ...

  7. HDU 6271 Master of Connected Component(2017 CCPC 杭州 H题,树分块 + 并查集的撤销)

    题目链接  2017 CCPC Hangzhou Problem H 思路:对树进行分块.把第一棵树分成$\sqrt{n}$块,第二棵树也分成$\sqrt{n}$块.    分块的时候满足每个块是一个 ...

  8. HDU 6270 Marriage (2017 CCPC 杭州赛区 G题,生成函数 + 容斥 + 分治NTT)

    题目链接  2017 CCPC Hangzhou Problem G 题意描述很清晰. 考虑每个家庭有且仅有$k$对近亲的方案数: $C(a, k) * C(b, k) * k!$ 那么如果在第$1$ ...

  9. HDU 6268 Master of Subgraph (2017 CCPC 杭州 E题,树分治 + 树上背包)

    题目链接  2017 CCPC Hangzhou  Problem E 题意  给定一棵树,每个点有一个权值,现在我们可以选一些连通的点,并且把这点选出来的点的权值相加,得到一个和. 求$[1, m] ...

随机推荐

  1. drf 认证功能

    drf(django rest-framework)认证组件 复习 HyperlinkedIdentityField ​```python 功能:快速生成连接 1. publish = seriali ...

  2. Python使用ORM控制MongoDB(MongoEngine)

    简介: MongoEngine是一个对象文档映射器(ODM),相当于一个基于SQL的对象关系映射器(ORM) pymongo来操作MongoDB数据库,但是直接把对于数据库的操作代码都写在脚本中,这会 ...

  3. POJ 3281 网络流 拆点 Dining

    题意: 有F种食物和D种饮料,每头牛有各自喜欢的食物和饮料,而且每种食物或者饮料只能给一头牛. 求最多能有多少头牛能同时得到它喜欢的食物或者饮料. 分析: 把每个牛拆点,中间连一条容量为1的边,保证一 ...

  4. 【原创】Mysql中事务ACID实现原理

    引言 照例,我们先来一个场景~ 面试官:"知道事务的四大特性么?" 你:"懂,ACID嘛,原子性(Atomicity).一致性(Consistency).隔离性(Isol ...

  5. day07 类的进阶,socket编程初识

    类的静态方法: 正常: 添加静态方法: 就会变成一个函数,不会自动传self 参数,不会调用类的变量和实例的变量  不在需要self 名义上归类管,但是它就是一个单独的函数,不在需要传入self,想怎 ...

  6. Spring Boot + Mybatis 多数据源配置实现读写分离

    本文来自网易云社区 作者:王超 应用场景:项目中有一些报表统计与查询功能,对数据实时性要求不高,因此考虑对报表的统计与查询去操作slave db,减少对master的压力. 根据网上多份资料测试发现总 ...

  7. ASP.NET MVC下使用SWFUpload完成剪切头像功能

    首先介绍SWFUpload组件 SWFUpload是一个客户端文件上传工具,最初由Vinterwebb.se开发,它通过整合Flash与JavaScript技术 为WEB开发者提供了一个具有丰富功能继 ...

  8. linux各种版本查看方法

    1.linux内核版本 cat /proc/version Linux version 4.13.0-39-generic (buildd@lgw01-amd64-038) (gcc version ...

  9. [转]linux多命令的顺序执行

    当我们需要一次执行多个命令的时候,命令之间需要用连接符连接,不同的连接符有不同的效果. (1) ; 分号,没有任何逻辑关系的连接符.当多个命令用分号连接时,各命令之间的执行成功与否彼此没有任何影响,都 ...

  10. c3p0-config.xml模板详解

    c3p0-config.xml模板详解 <c3p0-config> <default-config> <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数.De ...