CF 700B Connecting Universities
来源:互联网 发布:千牛在哪打开淘宝首页 编辑:程序博客网 时间:2024/04/29 17:43
Description
给出n个点的树,及2*k个节点,给他们每两个进行分组,我们定义一组的贡献为该组的两个节点之间的距离。求这k组的最大的贡献和为多少。
Data Constraint
2 ≤ n ≤ 200 000, 1 ≤ k ≤ n / 2
Solution
我们发现对于一条边,当它左边有要求配对x个节点,右边有要求配对y个节点,那么显然最大的方案就是min(x,y)。所以,我们照着这样对每条边判断一下就好。时间复杂度O(N)。
代码
#include<iostream>#include<cmath>#include<cstring>#include<cstdio>#include<algorithm>#define ll long longusing namespace std;const int maxn=400005;ll first[maxn],last[maxn],next[maxn],num,n,i,t,j,k,l,size[maxn],m,x,y,ans;bool bz[maxn];void lian(int x,int y){ last[++num]=y;next[num]=first[x];first[x]=num;}void dg(ll x,ll y){ ll t; for (t=first[x];t;t=next[t]){ if (last[t]==y) continue; dg(last[t],x); size[x]+=size[last[t]]; ans+=min(size[last[t]],2*m-size[last[t]]); } if (bz[x]) size[x]++;}int main(){ //freopen("data.in","r",stdin); scanf("%d%d",&n,&m); for (i=1;i<=2*m;i++) scanf("%d",&x),bz[x]=true; for (i=1;i<n;i++) scanf("%d%d",&x,&y),lian(x,y),lian(y,x); dg(1,0); printf("%lld\n",ans);}
3 0
- CF 700B Connecting Universities
- Codeforces 700B Connecting Universities(DFS)
- Codeforces 700B Connecting Universities(树的中心)
- codeforces 700B Connecting Universities (贪心详解)
- CF#701 E. Connecting Universities (DFS)
- Connecting Universities
- 51nod 1737 配对 && Codeforces 700B Connecting Universities【树的重心】
- Codeforecs 700D Connecting Universities 构造
- Codeforces Round #364 (Div. 1) B.Connecting Universities
- Codeforces Round #364 (Div. 1) B. Connecting Universities
- Codeforces Round #364 (Div. 1) B Connecting Universities
- Codeforces Round #364 (Div. 1) B. Connecting Universities(图论)
- Codeforces700B. Connecting Universities
- codeforces round364 div2E Connecting Universities
- [codeforces700B]-Connecting Universities-贪心策略
- codefoces #364 div2 E &&div 1 B Connecting Universities [图论]【求贡献】
- codeforces 701E. Connecting Universities 树
- Codeforces Round #364 (Div. 2) E. Connecting Universities 贪心 + dfs
- svn相关设置
- ByteBuffer的使用
- linux下安装配置opencv开发环境
- tomcat server.xml 详解
- linux php cli模式下获取服务器ip
- CF 700B Connecting Universities
- 最新高通内核解包打包工具[支持解包dt.img] MKBOOT
- js-闭包 代码多示例
- 今日闲谈
- linux一次杀死多个进程
- Linux(2)RedHat7 基本命令一-终端介绍
- Spring框架参考手册_5.0.0_中文版_Part I_第一章
- Java的异常处理
- 批量删除Windows7中隧道适配器的方法