【树形DP】BZOJ1596-[Usaco2008 Jan]电话网络
【题目大意】
在一棵有n个节点的树上建信号塔,每个节点的信号塔可以覆盖当前节点极其相连的节点。问要覆盖所有节点,至少需要多少座信号塔?
【思路】
经典的树形DP,直接复制一下。
f[i][0]:以i为根的子树中所有点均被覆盖且草地i上无信号塔所需的最小塔数(i被其儿子覆盖)
f[i][1]:以i为根的子树中所有点均被覆盖且草地i上有信号塔所需的最小塔数
f[i][2]:以i为根的子树中除i点以外其余点均被覆盖所需的最小塔数
f[i][0]=至少有一个儿子有塔的最小情况。所以这样处理:每次取f[j][0]和f[j][1]中较小的,如果有一个满足f[j][1]<f[j][0],OK。如果对于所有的儿子,f[j][0]较小,存下min(f[j][1]-f[j][0]),最后再加上就好了。
f[i][1]=∑min(f[j][0],f[j][1],f[j][2])
f[i][2]=∑min(f[j][0])
#include<bits/stdc++.h>
using namespace std;
const int MAXN=+;
const int INF=0x7fffffff;
int n,f[MAXN][];
vector<int> E[MAXN]; void init()
{
scanf("%d",&n);
for (int i=;i<n-;i++)
{
int a,b;
scanf("%d%d",&a,&b);
E[a].push_back(b);
E[b].push_back(a);
}
} void dp(int fr,int u)
{
f[u][]=f[u][]=;
f[u][]=;
int delta=INF,flag=;
for (int i=;i<E[u].size();i++)
{
int v=E[u][i];
if (v==fr) continue;
dp(u,v);
if (f[v][]<f[v][]) flag=;else delta=min(delta,f[v][]-f[v][]);
f[u][]+=min(f[v][],f[v][]);
f[u][]+=min(f[v][],min(f[v][],f[v][]));
f[u][]+=f[v][];
}
if (flag==) f[u][]+=delta;
if (E[u].size()== && E[u][]==fr)
{
f[u][]=n;
f[u][]=;
f[u][]=;
}
} void printans()
{
printf("%d",min(f[][],f[][]));
} int main()
{
init();
dp(,);
printans();
return ;
}
【树形DP】BZOJ1596-[Usaco2008 Jan]电话网络的更多相关文章
- BZOJ1596: [Usaco2008 Jan]电话网络
1596: [Usaco2008 Jan]电话网络 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 513 Solved: 232[Submit][S ...
- [BZOJ1596] [Usaco2008 Jan]电话网络(树形DP || 贪心)
传送门 1.树形DP #include <cstdio> #include <cstring> #include <iostream> #define N 1000 ...
- BZOJ1596 [Usaco2008 Jan]电话网络 【树形dp】
题目链接 BZOJ1596 题解 先抽成有根树 设\(f[i][0|1][0|1]\)表示以\(i\)为根,儿子都覆盖了,父亲是否覆盖,父亲是否建塔的最少建塔数 转移一下即可 #include< ...
- 1596: [Usaco2008 Jan]电话网络
1596: [Usaco2008 Jan]电话网络 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 601 Solved: 265[Submit][S ...
- 【bzoj1596】[Usaco2008 Jan]电话网络 树形dp
题目描述 Farmer John决定为他的所有奶牛都配备手机,以此鼓励她们互相交流.不过,为此FJ必须在奶牛们居住的N(1 <= N <= 10,000)块草地中选一些建上无线电通讯塔,来 ...
- 【bzoj1596】[Usaco2008 Jan]电话网络
题目描述 Farmer John决定为他的所有奶牛都配备手机,以此鼓励她们互相交流.不过,为此FJ必须在奶牛们居住的N(1 <= N <= 10,000)块草地中选一些建上无线电通讯塔,来 ...
- USACO2008 Jan 电话网络
Time Limit: 10 Sec Memory Limit: 162 MB Description Farmer John决定为他的所有奶牛都配备手机,以此鼓励她们互相交流.不过,为此FJ必须在奶 ...
- 【BZOJ】1596: [Usaco2008 Jan]电话网络(树形dp+特殊的技巧)
http://www.lydsy.com/JudgeOnline/problem.php?id=1596 一开始交了个貌似正确的dp,wa了. 我只考虑了儿子覆盖的情况,没有考虑父亲QAQ 那么我们要 ...
- BZOJ 1596: [Usaco2008 Jan]电话网络 树形DP
挺经典的,细节需要特别注意一下 Code: #include<bits/stdc++.h> using namespace std; #define setIO(s) freopen(s& ...
随机推荐
- 使sqoop能够启用压缩的一些配置
在使用sqoop 将数据库表中数据导入至hdfs时 配置启用压缩 hadoop 的命令 检查本地库支持哪些 bin/hadoop checknative 需要配置native 要编译版本 ...
- 搭建cdh单机版版本的hive所遇到的问题总汇
今天按照网上教程搭建了下 cdh 单机版的 hive 将相关配置记录下来 以便以后方便翻阅 版本 hive-0.13.1-cdh5.3.6.tar.gz 1. 直接解压 然后将 mysql驱动包 拷 ...
- (转)什么是CDC类(Communication Device Class)
全文地址:http://justmei.blog.163.com/blog/static/1160998532010321112522467/ 什么是CDC类 (Communication Devic ...
- 64_t3
texlive-dice-svn28501.0-33.fc26.2.noarch.rpm 24-May-2017 15:52 36490 texlive-dichokey-doc-svn17192.0 ...
- 64_q1
QMsgBox-0-9.20130830git94677dc.fc26.i686.rpm 13-Feb-2017 23:40 40674 QMsgBox-0-9.20130830git94677dc. ...
- ProxySQL 故障
发现直接连接MGR节点是正常的,可以写入,但通过ProxySQL连接就无法show\select\insert 等 使用sysbench对ProxySQL报以下错误: FATAL: `thread_r ...
- Linux轻量级自动运维工具-Ansible浅析【转】
转自 Linux轻量级自动运维工具-Ansible浅析 - ~微风~ - 51CTO技术博客http://weiweidefeng.blog.51cto.com/1957995/1895261 Ans ...
- VirtualBox与Genymotion命令行启动
一.VirtualBox命令行启动 1.添加环境变量: %programfiles%\Oracle\VirtualBox 2.用VBoxManage查看已存在vmname|uuid命令: VBoxMa ...
- 安装mysql驱动之 mysqlclient 出现的报错处理(ubuntu16.04)
首先 更新软件! sudo apt-get update 然后尝试安装mysqlclient,报错 后执行下面的步骤 安装mysql驱动之 mysqlclient 出现的报错信息处理 报错1: OSE ...
- javadoc生成word接口文档
1.下载DocFlex/Doclet 下载地址 http://www.filigris.com/downloads/ 2.ecplise->project->generate javado ...