题目描述

奶牛们建立了电话网络,这个网络可看作为是一棵无根树连接n(1 n 100,000)个节点,节点编号为1 .. n。每个节点可能是(电话交换机,或者电话机)。每条电话线连接两个节点。第i条电话线连接两个节点Ai和Bi(1 Ai,Bi n; Ai Bi)。 叶子节点只连接一条电话线,这些叶子节点是位于电话网中的一个电话亭。两头奶牛需要通话,信号是沿着电话网络中连接两个顶点之间最短的路径传递。每部交换机最多可容纳K (1 K 10)对牛同时通话,对于输入的无根树,求出在任何一个时间最多可同时对话奶牛的对数。 下面是6个节点的电话网络(无根树):  在叶子节点1,3,5和6中有四头奶牛,如果奶牛1和奶牛3,奶牛5和奶牛6通话,那么同时通话的最大数目是2(2对奶牛同时通话)。

输入

第1行: 用空格分开的两个整数:n和k。 第2..n+1行: 第i+1行用空格分开的两个整数,Ai和Bi。

输出

仅1行: 一个整数表示可同时对话奶牛的对数。

样例输入

6 1
1 2
2 3
2 4
4 5
4 6

样例输出

2
 
题目大意就是每个非叶子节点有一个容量限制,每两个叶子节点配对要占用这两个点路径上所有点1容量且每个叶子节点只能被匹配一次,问最多能匹配多少对。这个题显然是贪心,对于每个叶子节点,要尽量找近的叶子节点匹配(即两个节点lca最深的)。那么对于每棵由叶子节点和它们父节点组成的子树(二阶树)进行匹配,有两种情况:
1、在子树内就能把所有叶子匹配完,或容量不足以匹配完这棵子树中所有的叶子。这种情况就意味着这棵子树匹配完了,不会再和别的子树匹配。
2、把这棵子树内匹配完还剩叶子没匹配且父节点还有容量。这种情况可以给这棵子树的根节点(即上述父节点)打上标记表示这棵子树有节点需要被匹配。
这样每次二阶树匹配完之后把剩下没匹配但能匹配的点再和相对较近的点匹配,就能得到最大匹配数。
最后附上代码。
#include<queue>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n,k;
int x,y;
int ans;
int tot;
int g[100010];
int v[100010];
int to[200010];
int vis[100010];
int head[100010];
int next[200010];
void add(int x,int y)
{
tot++;
next[tot]=head[x];
head[x]=tot;
to[tot]=y;
}
void dfs(int x,int fa)
{
if(vis[x]==1)
{
g[x]=1;
if(x!=1)
{
return ;
}
}
for(int i=head[x];i;i=next[i])
{
if(to[i]!=fa)
{
dfs(to[i],x);
if(g[to[i]]==1)
{
if(g[x]==1)
{
v[x]++;
g[x]=0;
}
else if(v[x]!=k)
{
g[x]=1;
}
}
}
}
ans+=v[x];
}
int main()
{
scanf("%d%d",&n,&k);
for(int i=1;i<n;i++)
{
scanf("%d%d",&x,&y);
add(x,y);
add(y,x);
vis[x]++;
vis[y]++;
}
dfs(1,0);
printf("%d",ans);
}

BZOJ1785[USACO 2010 Jan Gold 3.Cow Telephones]——贪心的更多相关文章

  1. BZOJ1915[USACO 2010 Open Gold 1.Cow Hopscotch]——DP+斜率优化

    题目描述 奶牛们正在回味童年,玩一个类似跳格子的游戏,在这个游戏里,奶牛们在草地上画了一行N个格子,(3 <=N <= 250,000),编号为1..N.就像任何一个好游戏一样,这样的跳格 ...

  2. BZOJ1828[USACO 2010 Mar Gold 2.Barn Allocation]——贪心+线段树

    题目描述 输入 第1行:两个用空格隔开的整数:N和M * 第2行到N+1行:第i+1行表示一个整数C_i * 第N+2到N+M+1行: 第i+N+1行表示2个整数 A_i和B_i 输出 * 第一行: ...

  3. [USACO 2018 Jan Gold] Tutorial

    Link: USACO 2018 Jan Gold 传送门 A: 对于不同的$k$,发现限制就是小于$k$的边不能走 那么此时的答案就是由大于等于$k$的边形成的图中$v$所在的连通块除去$v$的大小 ...

  4. bzoj2581 [USACO 2012 Jan Gold] Cow Run【And-Or Tree】

    传送门1:http://www.usaco.org/index.php?page=viewproblem2&cpid=110 传送门2:http://www.lydsy.com/JudgeOn ...

  5. BZOJ1827[USACO 2010 Mar Gold 1.Great Cow Gathering]——树形DP

    题目描述 Bessie正在计划一年一度的奶牛大集会,来自全国各地的奶牛将来参加这一次集会.当然,她会选择最方便的地点来举办这次集会.每个奶牛居住在 N(1<=N<=100,000) 个农场 ...

  6. bzoj258 [USACO 2012 Jan Gold] Bovine Alliance【巧妙】

    传送门1:http://www.usaco.org/index.php?page=viewproblem2&cpid=111 传送门2:http://www.lydsy.com/JudgeOn ...

  7. Usaco 2010 Dec Gold Exercise(奶牛健美操)

    /*codevs 3279 二分+dfs贪心检验 堆版本 re一个 爆栈了*/ #include<cstdio> #include<queue> #include<cst ...

  8. bzoj3939 【USACO 2015 FEB GOLD 】cow hopscotch

    Description 就像人类喜欢玩"跳房子"的游戏,农民约翰的奶牛已经发明了该游戏的一个变种自己玩.由于笨拙的动物体重近一吨打,牛跳房子几乎总是以灾难告终,但这是没有阻止奶牛几 ...

  9. BZOJ1782[USACO 2010 Feb Gold 3.Slowing down]——dfs+treap

    题目描述 每天Farmer John的N头奶牛(1 <= N <= 100000,编号1…N)从粮仓走向他的自己的牧场.牧场构成了一棵树,粮仓在1号牧场.恰好有N-1条道路直接连接着牧场, ...

随机推荐

  1. 【Codeforces 86C】Genetic engineering

    Codeforces 86 C 题意:给\(m\)个串,要构造长度为\(n\)的串,而且必须由这些模式串们覆盖(可以重复),问可以构造多少种. 思路:首先构造AC自动机,然后\(dp(i,j,k)\) ...

  2. co模块源码学习笔记

    // Sorrow.X --- 添加注释,注释纯属个人理解 /** * slice变量 引用 数组的 slice方法 */ var slice = Array.prototype.slice; /** ...

  3. SQL Server如何查看当前数据库连接的SPID

    使用SQL Server系统变量@@SPID即可: SELECT @@SPID

  4. 讲一下Asp.net core MVC2.1 里面的 ApiControllerAttribute (转载)

    ASP.NET Core MVC 2.1 特意为构建 HTTP API 提供了一些小特性,今天主角就是 ApiControllerAttribute. (注:文章是18年2月份的,所以文章提到了cor ...

  5. CF662C Binary Table FWT

    传送门 \(N \leq 20\)很小诶 一个暴力的思路是枚举行的翻转状态然后在列上贪心 复杂度为\(O(2^NM)\)显然过不去 考虑到可能有若干列的初始状态是一样的,那么在任意反转之后他们贪心的策 ...

  6. mac安装CocoaPods遇到的问题及解决办法

    (1)sudo gem install cocoapods Fetching: i18n-0.7.0.gem (100%) Successfully installed i18n-0.7.0 Fetc ...

  7. zookeepeer使用zkCli.sh命令

    一.连接服务器端 [root@sxl132 zookeepeer]# ./bin/zkCli. Connecting to -- ::, [myid:] - INFO [main:Environmen ...

  8. 洛谷 4823 [TJOI2013]拯救小矮人

    题目链接-> 噔楞 题解: 贪心 按个高+臂长排序. 个矮臂长的先走,个高臂短的后走 #include <cstdio> #include <cstring> #incl ...

  9. Jmeter(二十八)_Docker+Jmeter+Gitlab+Jenkins+Ant(容器化的接口自动化持续集成平台)

    这套接口自动化持续集成环境已经部署差不多了,现在说说我的设计思路 1:利用Docker容器化Gitlab,Jenkins,Jmeter,Ant,链接如下 Docker_容器化gitlab Docker ...

  10. C#爬虫基本知识

    url编码解码 首先引用程序集System.Web.dll 如果要解码某个url的参数值的话,可以调用下面的方法: System.Web.HttpUtility.UrlDecode(string) 对 ...