挺经典的,细节需要特别注意一下

Code:

#include<bits/stdc++.h>
using namespace std;
#define setIO(s) freopen(s".in","r",stdin)
#define maxn 20003
#define inf 10000000
int edges;
int hd[maxn],to[maxn],nex[maxn],f[maxn][4];
void add(int u,int v)
{
nex[++edges]=hd[u],hd[u]=edges,to[edges]=v;
}
void dfs(int u,int fa)
{
int sum=0;
f[u][0]=0, f[u][2]=1, f[u][1]=inf;
for(int i=hd[u];i;i=nex[i])
{
int v=to[i];
if(v==fa) continue;
dfs(v,u);
f[u][0]+=f[v][1], f[u][2]+=min(f[v][0],min(f[v][1], f[v][2])), sum+=min(f[v][1], f[v][2]);
}
for(int i=hd[u];i;i=nex[i])
{
int v=to[i];
if(v==fa) continue;
f[u][1]=min(f[u][1], sum+f[v][2]-min(f[v][2],f[v][1]));
}
}
int main()
{
// setIO("input");
int i,j,n,x,y;
scanf("%d",&n);
for(i=1;i<n;++i)
{
scanf("%d%d",&x,&y);
add(x,y), add(y,x);
}
dfs(1,0);
printf("%d\n",min(f[1][1],f[1][2]));
return 0;
}

  

BZOJ 1596: [Usaco2008 Jan]电话网络 树形DP的更多相关文章

  1. 【bzoj1596】[Usaco2008 Jan]电话网络 树形dp

    题目描述 Farmer John决定为他的所有奶牛都配备手机,以此鼓励她们互相交流.不过,为此FJ必须在奶牛们居住的N(1 <= N <= 10,000)块草地中选一些建上无线电通讯塔,来 ...

  2. BZOJ 1596: [Usaco2008 Jan]电话网络

    Description Farmer John决定为他的所有奶牛都配备手机,以此鼓励她们互相交流.不过,为此FJ必须在奶牛们居住的N(1 <= N <= 10,000)块草地中选一些建上无 ...

  3. bzoj 1596: [Usaco2008 Jan]电话网络【贪心】

    dfs,如果一个点的儿子.本身.父亲都没有塔,就在父亲上建一个 原理不明-- #include<iostream> #include<cstdio> using namespa ...

  4. 1596: [Usaco2008 Jan]电话网络

    1596: [Usaco2008 Jan]电话网络 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 601  Solved: 265[Submit][S ...

  5. 【BZOJ】1596: [Usaco2008 Jan]电话网络(树形dp+特殊的技巧)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1596 一开始交了个貌似正确的dp,wa了. 我只考虑了儿子覆盖的情况,没有考虑父亲QAQ 那么我们要 ...

  6. 【BZOJ】1596: [Usaco2008 Jan]电话网络

    [算法]树上贪心 [题解] 因为一个点必须被覆盖,那么它如果没有被子树节点覆盖的话,就覆盖它的父节点. 从叶子开始贪心. 注意,如果它自己已经被选了就不需要选父节点了. #include<cst ...

  7. BZOJ1596: [Usaco2008 Jan]电话网络

    1596: [Usaco2008 Jan]电话网络 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 513  Solved: 232[Submit][S ...

  8. [BZOJ 4033] [HAOI2015] T1 【树形DP】

    题目链接:BZOJ - 4033 题目分析 使用树形DP,用 f[i][j] 表示在以 i 为根的子树,有 j 个黑点的最大权值. 这个权值指的是,这个子树内部的点对间距离的贡献,以及 i 和 Fat ...

  9. [BZOJ 4455] [ZJOI 2016] 小星星 (树形dp+容斥原理+状态压缩)

    [BZOJ 4455] [ZJOI 2016] 小星星 (树形dp+容斥原理+状态压缩) 题面 给出一棵树和一个图,点数均为n,问有多少种方法把树的节点标号,使得对于树上的任意两个节点u,v,若树上u ...

随机推荐

  1. jQuery测试错题解析

    1. JavaScript中实现回车切换效果是利用了event对象的( )属性. A.Tab B.keyCode C.KeyCode D.KeyDown 解析:实现回车切换效果是keyCode属性.故 ...

  2. Altium Designer chapter8总结

    元件库操作中需要注意如下: (1)原理图库:主要分三部分来完成(绘制元件的符号轮廓.放置元件引脚.设计规则检查). (2)多子件原理图库:操作与原理图库基本相同,就是新建part. (3)PCB封装库 ...

  3. Notepad++的tab设置为四个空格

    参考:https://www.cnblogs.com/jyfootprint/p/9409934.html 1.Python使用缩进来组织代码块,坚持使用4个空格的缩进. 在文本编辑器中,需要设置把T ...

  4. 练习3-python-创造百万条数据库数据

    有时候需求大批量的数据做测试支撑,如果使用传统的添加数据的方式可能比较耗费时间,利用python可以轻松的完成这项任务,还可以后续维护使用脚本. 方法1:insert into table selec ...

  5. Flask 启动配置

    数据迁移.

  6. sql中的isnull

    ISNULL 使用指定的替换值替换 NULL. 语法ISNULL ( check_expression , replacement_value ) 参数check_expression 将被检查是否为 ...

  7. windows10驱动精灵装完驱动后重启一直诊断修复中。。。完美解决

    给公司电脑重装完系统后安装惯例开始打驱动,用的是驱动精灵,一切顺利,安装完成后重启,结果出问题,正在诊断我的电脑,无法诊断 然后我进入疑难解答 高级选项--启动设置 然后按7禁用驱动签名,成功进入系统 ...

  8. [Web 前端] 014 css 盒子模型

    1. 简介 元素在页面中显示成一个方块,类似一个盒子 把元素叫做盒子,设置对应的样式分别为 盒子的边框(border) 盒子内的内容和边框之间的间距(padding) 盒子与盒子之间的间距(margi ...

  9. SUST_ACM_2019届暑期ACM集训热身赛题解

    问题A:Hello SUST! 知识点:基本输入输出 C/C++: #include <stdio.h> int main() { int n; scanf("%d", ...

  10. Collections与Arrays工具类

    Collections工具类: 排序操作: void reverse(List list)//反转 void shuffle(List list)//随机排序 void sort(List list) ...