BZOJ 1596--电话网络(树形DP)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BZOJ 1596--电话网络(树形DP)相关的知识,希望对你有一定的参考价值。
1596: [Usaco2008 Jan]电话网络
Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1139 Solved: 534
[Submit][Status][Discuss]
Description
Farmer John决定为他的所有奶牛都配备手机,以此鼓励她们互相交流。不过,为此FJ必须在奶牛们居住的N(1 <=
N <= 10,000)块草地中选一些建上无线电通讯塔,来保证任意两块草地间都存在手机信号。所有的N块草地按1..N
顺次编号。 所有草地中只有N-1对是相邻的,不过对任意两块草地A和B(1 <= A <= N; 1 <= B <= N; A != B),都
可以找到一个以A开头以B结尾的草地序列,并且序列中相邻的编号所代表的草地相邻。无线电通讯塔只能建在草地
上,一座塔的服务范围为它所在的那块草地,以及与那块草地相邻的所有草地。 请你帮FJ计算一下,为了建立能
覆盖到所有草地的通信系统,他最少要建多少座无线电通讯塔。
Input
* 第1行: 1个整数,N
* 第2..N行: 每行为2个用空格隔开的整数A、B,为两块相邻草地的编号
Output
* 第1行: 输出1个整数,即FJ最少建立无线电通讯塔的数目
Sample Input
5
1 3
5 2
4 3
3 5
输入说明:
Farmer John的农场中有5块草地:草地1和草地3相邻,草地5和草地2、草地
4和草地3,草地3和草地5也是如此。
1 3
5 2
4 3
3 5
输入说明:
Farmer John的农场中有5块草地:草地1和草地3相邻,草地5和草地2、草地
4和草地3,草地3和草地5也是如此。
Sample Output
2
输出说明:
FJ可以选择在草地2和草地3,或是草地3和草地5上建通讯塔。
输出说明:
FJ可以选择在草地2和草地3,或是草地3和草地5上建通讯塔。
题目链接:
http://www.lydsy.com/JudgeOnline/problem.php?id=1596
Solution
简单的树形DP。。。
dp [ 0 / 1 ] [ i ] 表示第 i 个点没有/有 建立无线电通讯塔时,使以i为根的子树被完全覆盖的最小数量。。
状态转移方程显然。。。
代码
#include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #include<iostream> #define N 10010 #define E 20020 using namespace std; int n,cnt; int head[N],dp[N][3]; struct edge{ int r,next; }e[E]; void insert(int u,int v){ e[++cnt].r=v; e[cnt].next=head[u]; head[u]=cnt; } void tree_DP(int x,int F){ int sum=0; dp[x][1]=1;dp[x][0]=N; for(int i=head[x];i>0;i=e[i].next) if(e[i].r!=F){ tree_DP(e[i].r,x); dp[x][1]+=min(dp[e[i].r][0],min(dp[e[i].r][1],dp[e[i].r][2])); dp[x][2]+=dp[e[i].r][0]; sum+=min(dp[e[i].r][0],dp[e[i].r][1]); } for(int i=head[x];i>0;i=e[i].next) if(e[i].r!=F) dp[x][0]=min(dp[x][0],dp[e[i].r][1]+sum-min(dp[e[i].r][0],dp[e[i].r][1])); } int main(){ int x,y,ans; cnt=0; scanf("%d",&n); for(int i=1;i<n;i++){ scanf("%d%d",&x,&y); insert(x,y); insert(y,x); } tree_DP(1,0); ans=min(dp[1][0],dp[1][1]); printf("%d\n",ans); return 0; }
This passage is made by Iscream-2001.
以上是关于BZOJ 1596--电话网络(树形DP)的主要内容,如果未能解决你的问题,请参考以下文章
bzoj 1596: [Usaco2008 Jan]电话网络
bzoj 1596: [Usaco2008 Jan]电话网络贪心