【bzoj2060】[Usaco2010 Nov]Visiting Cows拜访奶牛 树形dp
题目描述
经过了几周的辛苦工作,贝茜终于迎来了一个假期.作为奶牛群中最会社交的牛,她希望去拜访N(1<=N<=50000)个朋友.这些朋友被标号为1..N.这些奶牛有一个不同寻常的交通系统,里面有N-1条路,每条路连接了一对编号为C1和C2的奶牛(1 <= C1 <= N; 1 <= C2 <= N; C1<>C2).这样,在每一对奶牛之间都有一条唯一的通路. FJ希望贝茜尽快的回到农场.于是,他就指示贝茜,如果对于一条路直接相连的两个奶牛,贝茜只能拜访其中的一个.当然,贝茜希望她的假期越长越好,所以她想知道她可以拜访的奶牛的最大数目.
输入
第1行:单独的一个整数N
第2..N行:每一行两个整数,代表了一条路的C1和C2.
输出
单独的一个整数,代表了贝茜可以拜访的奶牛的最大数目.
样例输入
7
6 2
3 4
2 3
1 2
7 6
5 6
样例输出
4
题解
裸的树形dp。
f[x]代表拜访x时最大数量,g[x]代表不拜访x时最大数量。
那么易推得f[x]=1+∑g[to[i]],g[x]=∑max(f[to[i]],g[to[i]])。
答案即为max(f[1],g[1])。
#include <stdio.h>
#include <string.h>
int to[100001] , next[100001] , head[50001] , f[50001] , g[50001] , cnt;
int max(int a , int b)
{return a > b ? a : b;
}
void add(int x , int y)
{to[cnt] = y;next[cnt] = head[x];head[x] = cnt ++ ;
}
void dp(int x , int last)
{int i , y;f[x] = 1;for(i = head[x] ; i != -1 ; i = next[i]){y = to[i];if(y == last)continue;dp(y , x);f[x] += g[y];g[x] += max(f[y] , g[y]);}
}
int main()
{int n , i , x , y;scanf("%d" , &n);memset(head , -1 , sizeof(head));for(i = 1 ; i <= n - 1 ; i ++ ){scanf("%d%d" , &x , &y);add(x , y);add(y , x);}dp(1 , 0);printf("%d\n" , max(f[1] , g[1]));return 0;
}
转载于:https://www.cnblogs.com/GXZlegend/p/6171312.html
【bzoj2060】[Usaco2010 Nov]Visiting Cows拜访奶牛 树形dp相关推荐
- bzoj2060[USACO2010,Nov]Visiting Cows拜访奶牛
题目链接:bzoj上是权限题~ 题目大意: 题解: 树型DP f[i][0]表示不选i,f[i][1]表示选i.(因为很水..就不详写了) 可列出方程: f[i][0]=sigama(max(f[y] ...
- [Usaco2010 Nov]Visiting Cows
题目描述 经过了几周的辛苦工作,贝茜终于迎来了一个假期.作为奶牛群中最会社交的牛,她希望去拜访N(1<=N<=50000)个朋友.这些朋友被标号为1..N.这些奶牛有一个不同寻常的交通系统 ...
- bzoj2059[Usaco2010 Nov]Buying Feed 购买饲料*
bzoj2059[Usaco2010 Nov]Buying Feed 购买饲料 题意: 约翰开车来到镇上,他要带K吨饲料回家.如果他的车上有X吨饲料,每公里就要花费X^2元,开车D公里就需要D* X^ ...
- 【POJ - 1947】Rebuilding Roads (树形dp,背包问题,树形背包dp)
题干: The cows have reconstructed Farmer John's farm, with its N barns (1 <= N <= 150, number 1. ...
- BZOJ_1778_[Usaco2010 Hol]Dotp 驱逐猪猡_概率DP+高斯消元
BZOJ_1778_[Usaco2010 Hol]Dotp 驱逐猪猡_概率DP+高斯消元 题意: 奶牛们建立了一个随机化的臭气炸弹来驱逐猪猡.猪猡的文明包含1到N (2 <= N <= 3 ...
- BNUOJ 52305 Around the World 树形dp
题目链接: https://www.bnuoj.com/v3/problem_show.php?pid=52305 Around the World Time Limit: 20000msMemory ...
- [树形dp] Jzoj P5233 概率博弈
Description 小A和小B在玩游戏.这个游戏是这样的: 有一棵n个点的以1为根的有根树,叶子有权值.假设有m个叶子,那么树上每个叶子的权值序列就是一个1->m 的排列. 一开始在1号点有 ...
- fwt优化+树形DP HDU 5909
1 //fwt优化+树形DP HDU 5909 2 //见官方题解 3 // BestCoder Round #88 http://bestcoder.hdu.edu.cn/ 4 5 #include ...
- BZOJ 1040 ZJOI2008 骑士 树形DP
题目大意:给定一个基环树林,每一个点上有权值,要求选择一个权值和最大的点集,要求点集中的随意两个点之间不能直接相连 最大点独立集--考虑到n<=100W,网络流铁定跑不了,于是我们考虑树形DP ...
最新文章
- 关于Nginx的使用
- 看完这篇文章之后,终于明白了编译到底怎么回事
- Python实现控制台清屏
- 深入理解nodejs中的异步编程
- 【转】DB2 常用命令
- PID是什么?在做系统的故障排除时如何使用它?
- 五分钟让你的数据动起来,动态数据可视化极简教程
- abaqus推荐用哪一版本的_微信拍一拍怎么用? 微信拍一拍功能在哪怎么拍别人...
- 表达式必须是常量表达式
- 二叉树的镜像(C++)
- 信息系统项目管理---第九章 项目人力资源管理
- php+实现群发微信模板消息_php实现微信模板消息推送
- 20145201 《信息安全系统设计基础》期中总结
- 俄亥俄州立大学计算机专业排名,俄亥俄州立大学哥伦布分校计算机科学专业排名第30(2020年USNEWS美国排名)...
- Python爬虫爬取LOL所有英雄皮肤
- 北京市金融工作局:大数据重塑未来金融监管方式
- 最近很火的ChatGPT和GPT4
- 接口测试(二)接口测试用例设计
- 和利时scada系统服务器参数,MACS-SCADA综合监控系统
- 第十章Tensorflow图像处理