Fzu 2185 树的路径覆盖【思维+贪心】好题~
来源:互联网 发布:知乎 美国epic公司 编辑:程序博客网 时间:2024/05/19 06:17
Problem 2185 树的路径覆盖
Accept: 113 Submit: 306
Time Limit: 2000 mSec Memory Limit : 32768 KB
Problem Description
給一棵树, 用最少的路径去覆盖所有的边, 求(1)允许边被重复覆盖, (2)不允许边被重复覆盖.
Input
第一行是组数T(T <= 20). 每组两行, 第一行是n(1 <= n <= 10^5), 第二行是n - 1个数(0-based), 第i个数x[i]表示有一条边(x[i], i + 1), (0 <= i <= n - 2).
Output
两个值,第一个值是允许边被重复覆盖情况下的答案,第二个值是不允许边被重复覆盖下的答案,用一个空格分隔.
Sample Input
2
1
7
0 0 1 1 2 2
Sample Output
0 0
2 3
Source
FOJ有奖月赛-2015年03月思路:
1、首先根据输入描述可知,这是一颗以0为根的树。那么接下来我们画出一个树的图形来观察:
此时我们考虑可以有重复边覆盖的问题,那么我们就是每次选择覆盖的路径为叶子节点1,---------------------根节点0----------------------叶子节点2的形式的路径。
那么我们不难发现,此种情况的解就是(叶子节点的个数+1)/2;
按照上图形式的方式排列节点,就是一种类似C的形状来选择覆盖路径(下图是一种路径覆盖的方式):
2、那么我们接下来考虑不能有边覆盖的情况:
①我们还是贪心,能画出来C就画C:子节点1--------------某根节点---------------子节点2
②那么如果画不出来C就画一。
枚举几种情况不难发现最终解为:节点0的出度+1/2和各个点的出度/2的累加和.
Ac代码:
#include<stdio.h>#include<string.h>using namespace std;int out[100050];int main(){ int t; scanf("%dd",&t); while(t--) { int n; scanf("%d",&n); memset(out,0,sizeof(out)); for(int i=0;i<n-1;i++) { int x; scanf("%d",&x); out[x]++; } int cnt=0; int output=0; for(int i=0;i<n;i++) { if(out[i]==0&&i!=0)cnt++; if(i==0)output+=(out[i]+1)/2; else output+=out[i]/2; } printf("%d %d\n",(cnt+1)/2,output); }}
0 0
- Fzu 2185 树的路径覆盖【思维+贪心】好题~
- 【FZU 2185】 Problem 2185 树的路径覆盖(建树)
- 【FZU】2185 树的路径覆盖(搜索)
- FZU 2185 树的路径覆盖 dfs深搜
- fzu 2185 树的路径覆盖(dfs)
- 1907: 树的路径覆盖 贪心
- BZOJ 1907: 树的路径覆盖|贪心
- 【bzoj1907】【树的路径覆盖】【贪心】
- 【BZOJ1907】树的路径覆盖【贪心】
- [BZOJ1907]树的路径覆盖(贪心)
- Fzu 2254 英语考试【思维+最小生成树】好题~
- (福大2015年3月月赛)FZU 2185 树的路径覆盖 (DFS)
- SPOJ - UOFTCG(树的路径覆盖,好题)
- poj1017 贪心 思维 好题
- Fzu 2207 以撒的结合【思维+Dfs序】好题!好题!
- bzoj 1907 树的路径覆盖 [贪心] [树的最小路径覆盖]
- 【BZOJ】【P1907】【树的路径覆盖】【题解】【贪心】
- [树形DP || 贪心] BZOJ 1907 树的路径覆盖
- struct in_addr ,struct sockadd,ifreq,eth0,ioctl
- Apache Kafka cluster environment 环境搭建
- map容器的基本操作
- poj2100(尺取模型,总结)
- linux下如何编译自己的动态链接库
- Fzu 2185 树的路径覆盖【思维+贪心】好题~
- HDU4506 小明系列故事——师兄帮帮忙(快速幂取模)
- Sqoop-1.4.4工具import和export使用详解
- HTML5基础之常用标签以及标签选择器
- linux 下制作fat32文件系统的命令
- C语言:冒泡排序、选择排序、快速排序、插入排序、“shell”法
- 洛谷 P1205数的划分
- OpenCV基础入门 基于官方文档解读(3)--core模块学习
- 前缀表达式 先序遍历 深度优先 语法树的联想