【树形dp】vijos1144小胖守皇宫
细节很精妙
描述
huyichen世子事件后,xuzhenyi成了皇上特聘的御前一品侍卫。
皇宫以午门为起点,直到后宫嫔妃们的寝宫,呈一棵树的形状;某些宫殿间可以互相望见。大内保卫森严,三步一岗,五步一哨,每个宫殿都要有人全天候看守,在不同的宫殿安排看守所需的费用不同。
可是xuzhenyi手上的经费不足,无论如何也没法在每个宫殿都安置留守侍卫。
帮助xuzhenyi布置侍卫,在看守全部宫殿的前提下,使得花费的经费最少。
格式
输入格式
输入文件中数据表示一棵树,描述如下:
第1行 n,表示树中结点的数目。
第2行至第n+1n+1行,每行描述每个宫殿结点信息,依次为:该宫殿结点标号i(0<i \le n0<i≤n),在该宫殿安置侍卫所需的经费k,该点的儿子数m,接下来m个数,分别是这个节点的m个儿子的标号r_1, r_2, \cdots, r_mr1,r2,⋯,rm。
对于一个n(0 < n \le 15000<n≤1500)个结点的树,结点标号在1到n之间,且标号不重复。保证经费总和不超过2^31-1231−1。
输出格式
输出文件仅包含一个数,为所求的最少的经费。
题目分析
有些细节处理真的是非常精妙。
分析详见初涉树形dp【权最小点覆盖】vijos1144皇宫看守
1 #include<bits/stdc++.h> 2 const int maxn = 2003; 3 4 int f[maxn][3],a[maxn],n,rt; 5 int head[maxn],nxt[maxn<<1],edges[maxn<<1],edgeTot; 6 bool vis[maxn]; 7 8 int read() 9 { 10 char ch = getchar(); 11 int num = 0; 12 bool fl = 0; 13 for (; !isdigit(ch); ch = getchar()) 14 if (ch=='-') fl = 1; 15 for (; isdigit(ch); ch = getchar()) 16 num = (num<<1)+(num<<3)+ch-48; 17 if (fl) num = -num; 18 return num; 19 } 20 inline int min(int a, int b){return a<b?a:b;} 21 inline int min(int a, int b, int c){int t=min(a,b);return t<c?t:c;} 22 void addedge(int u, int v) 23 { 24 edges[++edgeTot] = v, nxt[edgeTot] = head[u], head[u] = edgeTot; 25 vis[v] = 1; 26 } 27 void dfs(int now) 28 { 29 int delta = 2e9; 30 for (int i=head[now]; i!=-1; i=nxt[i]) 31 { 32 int v = edges[i]; 33 dfs(v); 34 f[now][0] += min(f[v][1], f[v][2]); 35 f[now][1] += min(f[v][1], f[v][2]); 36 delta = min(f[v][2]-f[v][1], delta); 37 f[now][2] += min(f[v][0], f[v][1], f[v][2]); 38 } 39 delta = std::max(delta, 0); 40 f[now][1] += delta; 41 } 42 int main() 43 { 44 memset(head, -1, sizeof head); 45 n = read(); 46 for (int i=1; i<=n; i++) 47 { 48 int p = read(), k; 49 f[p][2] = a[p] = read(), k = read(); 50 while (k--) addedge(p, read()); 51 } 52 rt = 1; 53 while (vis[rt]) rt++; 54 dfs(rt); 55 printf("%d\n",min(f[rt][1], f[rt][2])); 56 return 0; 57 }
END
转载于:https://www.cnblogs.com/antiquality/p/9246654.html
【树形dp】vijos1144小胖守皇宫相关推荐
- 树形dp小胖守皇宫(vijosP1144)
题目链接:https://vijos.org/p/1144 题解:这道题的动归稍稍有一点的复杂,因为一个节点有可能被它的子节点观察,也有可能被父节点观察: 所以我们这样表示: f[i][0](表示当前 ...
- AcWing1077. 皇宫看守(树形DP)题解
题目传送门 题目描述 太平王世子事件后,陆小凤成了皇上特聘的御前一品侍卫. 皇宫以午门为起点,直到后宫嫔妃们的寝宫,呈一棵树的形状,某些宫殿间可以互相望见. 大内保卫森严,三步一岗,五步一哨,每个宫殿 ...
- AcWing 1077. 皇宫看守(树形DP + 状态机DP)
AcWing 1077. 皇宫看守(树形DP + 状态机DP) 一.问题 二.分析 1.思路分析 2.状态表示 3.状态转移 4.循环设计 5.初末状态 三.代码 一.问题 二.分析 1.思路分析 在 ...
- 1579: 【例 5】皇宫看守(最小支配集——贪心求解/树形DP)
[题目描述] 太平王世子事件后,陆小凤成了皇上特聘的御前一品侍卫. 皇宫以午门为起点,直到后宫嫔妃们的寝宫,呈一棵树的形状,某些宫殿间可以互相望见.大内保卫森严,三步一岗,五步一哨,每个宫殿都要有人全 ...
- LOJ10157——皇宫看守(树形DP)
传送门:QAQQAQ 题意:在一个树上放置守卫,使每一个节点都至少有相邻一节点放置守卫,使最终经费最少 思路:树形DP 首先会想到没有上司的舞会,0表示不放守卫,1表示放守卫,但考虑到对于当前点不放守 ...
- 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 ...
最新文章
- java创建线程安全的集合
- 第29节 专业英语1
- 狄德罗效应下,小程序被“逼”向中心化
- 基础数据仓库环境搭建(三)Zookeeper的安装与配置和操作
- idea构建springboot项目右边没有maven_写给新手看的 Spring Boot 入门学习指南
- SAP UI5 初学者教程之十一 :SAP UI5 容器类控件 Page 和 Panel 试读版
- 如果我的实验室也这样布置,那多好。
- 不同平台下 sleep区别用法
- leetcode59. 螺旋矩阵 II
- java咖啡机故障5_【咖啡小常识】咖啡机不得不知道的常见故障及解决方法
- Go 语言“助力”恶意软件?仅 4 年基于 Go 的恶意软件数就激增 2000%!
- 计算机专业显示器英语,电脑显示器词汇 计算机英语词汇
- kindeditor php 漏洞,KindEditor漏洞、优化以及漏洞、BUG修复方案汇总
- CAN BusOff相关知识点
- 堪称货拉拉混合云数据库建设史,一场DBA团队的逆袭之战
- 解决“由于文件许可权错误 word无法完成保存”问题
- Opencv不显示图片
- 作者领读 | Prometheus云原生监控
- ZYNQ学习笔记——高速ADDA实验
- win7下Elasticsearch、Kibana安装
热门文章
- 浏览器使用java_java如何调用本地的浏览器
- 【LeetCode 2】两数相加(链表)
- 【牛客 - 185A】无序组数 (思维,数学,因子个数)
- 1)机器学习基石笔记Lecture1:The Learning Problem
- Java工厂构造函数参数,javascript 面向对象之构造函数、工厂方式、字面量
- php 字符串比较的规则,PHP字符串比较函数strcmp()与strcasecmp()的用法介绍
- halcon图片上传到mysql_C# 10个线程并发执行Halcon图像算法 报“尝试读取或写入受保护的内存。这通常指示其他内存已损坏。”...
- sql server查询历史进程_学习笔记 | SequoiaDB SQL查询语句执行过程
- 日期时间格式之间的相互转换
- java1.5以后新增的特性_jdk1.5之后的一些新特性