经典问题系列

覆盖半径\(1\)的最小点覆盖集

\(f[i][0]\) 表示不在此处建信号塔,但\(i\)及其子树都有信号

\(f[i][1]\) 表示在此处建信号塔,但\(i\)及其子树都有信号

\(f[i][2]\) 表示不在在此处建信号塔,但\(i\)子树都有信号,而\(i\)无信号

\(f[p][2]=\sum f[q][0]\)

\(f[p][1]=\sum min(f[q][0],f[q][1],f[q][2])\)

\(f[p][0]=min_q (f[q][1]+\sum_k min(f[k][0],f[k][1]))\)

答案就是 \(min(f[1][0],f[1][1])\)

#include <bits/stdc++.h>
using namespace std; #define int long long
const int N = 1000005;
vector <int> g[N];
int vis[N],f[N][3],t1,t2,t3,n; void dfs(int p) {
vis[p]=1;
int fa=0;
f[p][1]=1;
for(int i=0;i<g[p].size();i++) {
int q=g[p][i];
if(vis[q]==0) {
dfs(q);
f[p][2]+=f[q][0];
f[p][1]+=min(f[q][0],min(f[q][1],f[q][2]));
}
else fa=q;
}
f[p][0]=1e+16;
for(int i=0;i<g[p].size();i++) {
int q=g[p][i];
if(q!=fa) {
int tmp=f[q][1];
for(int j=0;j<g[p].size();j++) {
int k=g[p][j];
if(k!=fa && k!=q) {
tmp += min(f[k][0],f[k][1]);
}
}
f[p][0]=min(f[p][0],tmp);
}
}
} signed main() {
scanf("%lld",&n);
for(int i=1;i<n;i++) {
scanf("%lld%lld",&t1,&t2);
g[t1].push_back(t2);
g[t2].push_back(t1);
}
dfs(1);
cout<<min(f[1][0],f[1][1])<<endl;
}

[USACO08JAN] 手机网络 - 树形dp的更多相关文章

  1. [USACO08JAN]手机网络Cell Phone Network

    [USACO08JAN]手机网络Cell Phone Network 题目描述 Farmer John has decided to give each of his cows a cell phon ...

  2. 洛谷P2899 [USACO08JAN]手机网络Cell Phone Network

    P2899 [USACO08JAN]手机网络Cell Phone Network 题目描述 Farmer John has decided to give each of his cows a cel ...

  3. P2899 [USACO08JAN]手机网络Cell Phone Network

    P2899 [USACO08JAN]手机网络Cell Phone Networ题目描述 Farmer John has decided to give each of his cows a cell ...

  4. 洛谷 P2899 [USACO08JAN]手机网络Cell Phone Network

    题目描述 Farmer John has decided to give each of his cows a cell phone in hopes to encourage their socia ...

  5. 洛谷 P2899 [USACO08JAN]手机网络Cell Phone Network(树形动规)

    题目描述 Farmer John has decided to give each of his cows a cell phone in hopes to encourage their socia ...

  6. 【XSY1602】安全网络 树形DP 数学

    题目大意 有一颗树,要为每个节点赋一个值\(l_i\leq a_i\leq r_i\),使得任意相邻的节点互素.然后对每个节点统计\(a_i\)在所有可能的情况中的和. \(n\leq 50,1\le ...

  7. luogu P2899 [USACO08JAN]手机网络Cell Phone Network |贪心

    include include include include include include define db double using namespace std; const int N=1e ...

  8. 树形DP CCPC网络赛 HDU5834 Magic boy Bi Luo with his excited tree

    // 树形DP CCPC网络赛 HDU5834 Magic boy Bi Luo with his excited tree // 题意:n个点的树,每个节点有权值为正,只能用一次,每条边有负权,可以 ...

  9. 【树形dp】Bzoj3391 [Usaco2004 Dec]Tree Cutting网络破坏

    Description     约翰意识到贝茜建设网络花费了他巨额的经费,就把她解雇了.贝茜很愤怒,打算狠狠报 复.她打算破坏刚建成的约翰的网络.    约翰的网络是树形的,连接着N(1≤N≤1000 ...

随机推荐

  1. asp.net core 3.x Identity

    一.前言 这方面的资料很多,重复的写没必要,但是最近一直在学习身份验证和授权相关东东,为了成体系还是写一篇,主要是从概念上理解identity系统. 参考:https://www.cnblogs.co ...

  2. Microsoft.EntityFrameworkCore.Tools 相关命令

    一.前言 Entity Framework(后面简称EF)作为微软家的ORM,自然而然从.NET Framework延续到了.NET Core. 二.程序包管理器控制台 为了能够在控制台中使用命令行来 ...

  3. python3-cookbook笔记:第十章 模块与包

    python3-cookbook中每个小节以问题.解决方案和讨论三个部分探讨了Python3在某类问题中的最优解决方式,或者说是探讨Python3本身的数据结构.函数.类等特性在某类问题上如何更好地使 ...

  4. Winfom 使用 BackgroundWorker 实现进度条

    BackgroundWorker 简介(来自百度) BackgroundWorker是·net里用来执行多线程任务的控件,它允许编程者在一个单独的线程上执行一些操作.耗时的操作(如下载和数据库事务)在 ...

  5. 【Android】WebDav For Android

    最近在写一个云备份功能,参考了一下市面上的软件,发现有一种采用WebDav协议的云备份成本比较低,故特地研究一下使用. 服务器提供商是使用国内的坚果云,还是非常良心的. 坚果云官网:https://w ...

  6. MySQL8.0远程连接和用户授权相关设置

    文章目录 1.开启MySQL远程连接 2.关闭MySQL远程连接 3.修改防火墙规则,开放端口 4.创建用户以及给用户授权 5.删除用户及权限 1.开启MySQL远程连接 mysql -u root ...

  7. mysql升级后出现Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'userinfo.

    安装了mysql5.7,用group by 查询时抛出如下异常: Expression #3 of SELECT list is not in GROUP BY clause and contains ...

  8. 小白的java学习之路 “ 变量、数据类型和运算符”

    一.变量: 1.什么是变量? 变量是一个数据存储空间的表示 变量由:变量名  变量类型  变量的值 2.创造变量的两种方法: 1.声明-->赋值-->取值 //声明变量 int money ...

  9. Mac中如何搭建Vue项目并利用VSCode开发

    (一)部署Node环境 (1)下载适合Mac环境的Node包,点击进入下载页面 (2)安装Node环境:找到下载好的Node包,这里是node-v12.14.1.pkg,我们双击它,会进入Node.j ...

  10. Java开学测试-学生成绩管理系统

    题目: 1.定义 ScoreInformation 类,其中包括七个私有变量(stunumber, name, mathematicsscore, englishiscore,networkscore ...