细节很精妙

描述

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小胖守皇宫相关推荐

  1. 树形dp小胖守皇宫(vijosP1144)

    题目链接:https://vijos.org/p/1144 题解:这道题的动归稍稍有一点的复杂,因为一个节点有可能被它的子节点观察,也有可能被父节点观察: 所以我们这样表示: f[i][0](表示当前 ...

  2. AcWing1077. 皇宫看守(树形DP)题解

    题目传送门 题目描述 太平王世子事件后,陆小凤成了皇上特聘的御前一品侍卫. 皇宫以午门为起点,直到后宫嫔妃们的寝宫,呈一棵树的形状,某些宫殿间可以互相望见. 大内保卫森严,三步一岗,五步一哨,每个宫殿 ...

  3. AcWing 1077. 皇宫看守(树形DP + 状态机DP)

    AcWing 1077. 皇宫看守(树形DP + 状态机DP) 一.问题 二.分析 1.思路分析 2.状态表示 3.状态转移 4.循环设计 5.初末状态 三.代码 一.问题 二.分析 1.思路分析 在 ...

  4. 1579: 【例 5】皇宫看守(最小支配集——贪心求解/树形DP)

    [题目描述] 太平王世子事件后,陆小凤成了皇上特聘的御前一品侍卫. 皇宫以午门为起点,直到后宫嫔妃们的寝宫,呈一棵树的形状,某些宫殿间可以互相望见.大内保卫森严,三步一岗,五步一哨,每个宫殿都要有人全 ...

  5. LOJ10157——皇宫看守(树形DP)

    传送门:QAQQAQ 题意:在一个树上放置守卫,使每一个节点都至少有相邻一节点放置守卫,使最终经费最少 思路:树形DP 首先会想到没有上司的舞会,0表示不放守卫,1表示放守卫,但考虑到对于当前点不放守 ...

  6. BNUOJ 52305 Around the World 树形dp

    题目链接: https://www.bnuoj.com/v3/problem_show.php?pid=52305 Around the World Time Limit: 20000msMemory ...

  7. [树形dp] Jzoj P5233 概率博弈

    Description 小A和小B在玩游戏.这个游戏是这样的: 有一棵n个点的以1为根的有根树,叶子有权值.假设有m个叶子,那么树上每个叶子的权值序列就是一个1->m 的排列. 一开始在1号点有 ...

  8. fwt优化+树形DP HDU 5909

    1 //fwt优化+树形DP HDU 5909 2 //见官方题解 3 // BestCoder Round #88 http://bestcoder.hdu.edu.cn/ 4 5 #include ...

  9. BZOJ 1040 ZJOI2008 骑士 树形DP

    题目大意:给定一个基环树林,每一个点上有权值,要求选择一个权值和最大的点集,要求点集中的随意两个点之间不能直接相连 最大点独立集--考虑到n<=100W,网络流铁定跑不了,于是我们考虑树形DP ...

最新文章

  1. java创建线程安全的集合
  2. 第29节 专业英语1
  3. 狄德罗效应下,小程序被“逼”向中心化
  4. 基础数据仓库环境搭建(三)Zookeeper的安装与配置和操作
  5. idea构建springboot项目右边没有maven_写给新手看的 Spring Boot 入门学习指南
  6. SAP UI5 初学者教程之十一 :SAP UI5 容器类控件 Page 和 Panel 试读版
  7. 如果我的实验室也这样布置,那多好。
  8. 不同平台下 sleep区别用法
  9. leetcode59. 螺旋矩阵 II
  10. java咖啡机故障5_【咖啡小常识】咖啡机不得不知道的常见故障及解决方法
  11. Go 语言“助力”恶意软件?仅 4 年基于 Go 的恶意软件数就激增 2000%!
  12. 计算机专业显示器英语,电脑显示器词汇 计算机英语词汇
  13. kindeditor php 漏洞,KindEditor漏洞、优化以及漏洞、BUG修复方案汇总
  14. CAN BusOff相关知识点
  15. 堪称货拉拉混合云数据库建设史,一场DBA团队的逆袭之战
  16. 解决“由于文件许可权错误 word无法完成保存”问题
  17. Opencv不显示图片
  18. 作者领读 | Prometheus云原生监控
  19. ZYNQ学习笔记——高速ADDA实验
  20. win7下Elasticsearch、Kibana安装

热门文章

  1. 浏览器使用java_java如何调用本地的浏览器
  2. 【LeetCode 2】两数相加(链表)
  3. 【牛客 - 185A】无序组数 (思维,数学,因子个数)
  4. 1)机器学习基石笔记Lecture1:The Learning Problem
  5. Java工厂构造函数参数,javascript 面向对象之构造函数、工厂方式、字面量
  6. php 字符串比较的规则,PHP字符串比较函数strcmp()与strcasecmp()的用法介绍
  7. halcon图片上传到mysql_C# 10个线程并发执行Halcon图像算法 报“尝试读取或写入受保护的内存。这通常指示其他内存已损坏。”...
  8. sql server查询历史进程_学习笔记 | SequoiaDB SQL查询语句执行过程
  9. 日期时间格式之间的相互转换
  10. java1.5以后新增的特性_jdk1.5之后的一些新特性