Codeforces Round #364 (Div. 1) 700B(树)
题目大意
在n颗结点的树上有2k个需要配对的点,把他们两两配对,使得路程和最大并输出
选取一个点v
lv表示v与父亲的边
那么考虑lv被经过的次数,对于一个最大的情况,lv应该为min(sv, 2*k - sv) ,其中sv是v子树中需要配对的点(包括v)
假如lv比这个值小,那么必定有a和b在v的子树外,c和d在子树内,它们分别配对
但是如果这样的话,让a和c配对,b和d配对,显然更优
所以lv只能等于min(sv, 2*k - sv)
最后输出所有点的这个值的和即可
#include <iostream> #include <cstdio> #include <vector> using namespace std; long long sz[222222], ans; vector <int> G[222222]; void dfs(int x, int fa) {for(int i = 0; i < G[x].size(); i++){int to = G[x][i];if(to == fa) continue;dfs(to, x);sz[x] += sz[to];} } int n, k, x, y; int main() {cin>>n>>k;for(int i = 1; i <= 2*k; i++) cin>>x, sz[x]++;for(int i = 1; i < n; i++){cin>>x>>y;G[x].push_back(y);G[y].push_back(x);}dfs(1, 1);for(int i = 2; i <= n; i++) ans += min(sz[i], 2*k - sz[i]);cout<<ans<<endl; }
转载于:https://www.cnblogs.com/Saurus/p/6227293.html
Codeforces Round #364 (Div. 1) 700B(树)相关推荐
- Codeforces Round #364 (Div. 1) (差一个后缀自动机)
B. Connecting Universities 大意: 给定树, 给定2*k个点, 求将2*k个点两两匹配, 每个匹配的贡献为两点的距离, 求贡献最大值 单独考虑每条边$(u,v)$的贡献即可, ...
- 【推导】Codeforces Round #364 (Div. 2) D. As Fast As Possible
一种方法是二分总时间,复杂度O(nlogn). 另外我们可以证明,当所有人同时到达终点的时候,是最优的,因为没有人的时间"浪费"了. 我们又发现,每个人的运动过程总是两段,要么是走 ...
- Codeforces Round #364 (Div. 2)C. They Are Everywhere(尺取法)
题目链接: C. They Are Everywhere time limit per test 2 seconds memory limit per test 256 megabytes input ...
- Codeforces Round #740 (Div. 2) F. Top-Notch Insertions 线段树 / 平衡树 + 组合数学
传送门 文章目录 题意: 思路: 题意: 思路: 考虑最终的序列是什么鸭子的,首先序列肯定单调不降,也就是a1≤a2≤a3≤...≤ana_1\le a_2\le a_3\le ...\le a_na ...
- Codeforces Round #453 (Div. 1) D. Weighting a Tree 构造 + dfs树
传送门 文章目录 题意: 思路: 题意: 给你一颗nnn个点的图,每个点都有一个点权cic_ici,要求你给每个边赋一个权值kik_iki,要求对于每个点与他相连的边的权值之和等于这个点的点权ci ...
- Codeforces Round #675 (Div. 2) F. Boring Queries 区间lcm + 主席树
传送门 文章目录 题意: 思路: 题意: 给你一个长度为nnn的序列aaa,qqq个询问,每次询问[l,r][l,r][l,r]内的lcmlcmlcm是多少,对1e9+71e9+71e9+7取模. n ...
- Codeforces Round #737 (Div. 2) D. Ezzat and Grid 线段树动态开点
传送门 文章目录 题意: 思路: 题意: 思路: 比较套路的一个题,我们维护一个dp[i]dp[i]dp[i]表示到了第iii行能保留的区间最多是多少. 转移比较明显:dp[i]=max(dp[j]) ...
- Codeforces Round #723 (Div. 2) D. Kill Anton 线段树 + 暴力
传送门 文章目录 题意: 思路: 题意: 给你一个只有ANTOANTOANTO四个字母的字符串,你每次可以交换相邻两个,花费为111,让后让你打乱字符串,使得将打乱的字符串还原为原来的字符串的花费最小 ...
- Codeforces Round #628 (Div. 2) F. Ehab‘s Last Theorem dfs树
传送门 文章目录 题意: 思路: 题意: 给你个nnn个点mmm条边的图,可以选择完成以下两个任务中的一个: (1)(1)(1)找出大小恰好为n\sqrt nn的一个独立集. (2)(2)(2)找出 ...
- Codeforces Round #620 (Div. 2) F2. Animal Observation (hard version) dp + 线段树
传送门 文章目录 题意: 思路: 题意: 比如下面这个图: 思路: 对于这个题,比较容易就能考虑到dpdpdp,设f[i][j]f[i][j]f[i][j]为到了第iii行,覆盖了[j,j+k−1][ ...
最新文章
- Android 编译源码 注意事项
- Nginx访问日志、日志切割、静态文件不记录日志和过期时间
- Java报异常时getMessage()方法返回null
- python使用符号 表示单行注释-Pyhton 单行、多行注释符号使用方法及规范
- split函数python 未定义_Python之Split函数
- win10删除开机密码_新版WIN10 如何取消开机密码的操作
- zz bond配置网络: 两个网卡一个ip
- ReportViewer中设置ServerReport.ReportServerCredentials属性的方法(WEB版)
- springboot redis token_Spring Boot+Redis 扛住,瞬间千次重复提交(实例)
- 安卓倒计时 listview默认选中一项
- 使用hierarchyid查询分层数据
- 女人活到后半生才会明白:兜里有钱,才有安全感
- 支付宝出征世界杯!白岩松:“中国除了足球队没去,其他都去了”
- linux hotplug 机制,佐须之男的博客- 跟着佐大学Lede/OpenWrt开发入门培训班讲义-18 OpenWrt hotplug 机制分析...
- cpu测试稳定性软件,测试CPU稳定性工具Prime95
- 可以在linux下运行的u盘制作工具,U盘Linux制作工具LiveUSB Creator下载
- Fisher精确检验【转载】
- 大数据高薪职位必备:Hadoop求职者的6大攻略
- Android背景设置透明和半透明效果
- Ubuntu18.04将QT应用设计为开机自启