问题描述:太平王世子事件后,陆小凤成了皇上特聘的御前一品侍卫。
  皇宫以午门为起点,直到后宫嫔妃们的寝宫,呈一棵树的形状;某些宫殿间可以互相望见。大内保卫森严,三步一岗,五步一哨,每个宫殿都要有人全天候看守,在不同的宫殿安排看守所需的费用不同。
  可是陆小凤手上的经费不足,无论如何也没法在每个宫殿都安置留守侍卫。

编程任务:帮助陆小凤布置侍卫,在看守全部宫殿的前提下,使得花费的经费最少。

数据输入:输入数据由文件名为guard.in的文本文件提供。输入文件中数据表示一棵树,描述如下:
  第1行 n,表示树中结点的数目。
  第2行至第n+1行,每行描述每个宫殿结点信息,依次为:该宫殿结点标号i(0< i<=n),在该宫殿安置侍卫所需的经费k,该边的儿子数m,接下来m个数,分别是这个节点的m个儿子的标号r1,r2,…,rm。
  对于一个n(0 < n <= 1500)个结点的树,结点标号在1到n之间,且标号不重复。
数据输出:输出到guard.out文件中。输出文件仅包含一个数,为所求的最少的经费。
   如左图的输入数据示例    输出数据示例 25

能被看到的意思是有边相连hh,给定了树形。dp[0/1/2][i]表示以i为跟的子树全覆盖所需的最小花费,0表示子树的根被儿子看,1表示子树的根被自己看,2表示子树的根被父亲看。
则转移为dp[0][i]=∑min{dp[0][x],dp[1][x]}+dp[1][y],x为i的儿子,x!=y,y为选定的儿子(枚举y)\sum min\{dp[0][x],dp[1][x]\}+dp[1][y],x为i的儿子,x!=y,y为选定的儿子(枚举y)
dp[1][i]=∑min{dp[2][x],dp[1][x]}+a[i],x为i的儿子,a[i]为i的权值\sum min\{dp[2][x],dp[1][x]\}+a[i],x为i的儿子,a[i]为i的权值
dp[2][i]=∑min{dp[0][x],dp[1][x]},x为i的儿子\sum min\{dp[0][x],dp[1][x]\},x为i的儿子
最后答案就是min{dp[rt][0],dp[rt][1]}

#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define N 1510
#define inf 0x3f3f3f3f
inline int read(){int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();return x*f;
}
int n,a[N],fa[N],rt=0,dp[3][N];//0--被儿子看,1--被自己看,2--被父亲看
vector<int>son[N];
void dfs(int x){int res=0;for(int i=0;i<son[x].size();++i) dfs(son[x][i]),res+=min(dp[0][son[x][i]],dp[1][son[x][i]]);for(int i=0;i<son[x].size();++i){int y=son[x][i];if(dp[0][y]<dp[1][y]) dp[0][x]=min(dp[0][x],res-dp[0][y]+dp[1][y]);else dp[0][x]=min(dp[0][x],res);}dp[1][x]=a[x];for(int i=0;i<son[x].size();++i) dp[1][x]+=min(dp[1][son[x][i]],dp[2][son[x][i]]);dp[2][x]=res;
}
int main(){
//  freopen("a.in","r",stdin);n=read();for(int i=1;i<=n;++i){int x=read();a[x]=read();int m=read();while(m--){int y=read();son[x].push_back(y);fa[y]=x;}memset(dp,0x3f,sizeof(dp));}for(int i=1;i<=n;++i) if(!fa[i]){rt=i;dfs(i);break;}printf("%d\n",min(dp[0][rt],dp[1][rt]));return 0;
}

CIA1 皇宫看守(树形dp)相关推荐

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

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

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

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

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

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

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

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

  5. 【树形dp】vijos1144小胖守皇宫

    细节很精妙 描述 huyichen世子事件后,xuzhenyi成了皇上特聘的御前一品侍卫. 皇宫以午门为起点,直到后宫嫔妃们的寝宫,呈一棵树的形状:某些宫殿间可以互相望见.大内保卫森严,三步一岗,五步 ...

  6. Acwing 1077.皇宫看守

    Acwing 1077.皇宫看守 题目 输入格式 输出格式 数据范围 输入样例 输出样例 样例解释 分析 详细代码 这是我第一篇博客,如有侵权或者不足的地方,我将予以修改,并改正 题目 太平王世子事件 ...

  7. TYWZOJ[1580]皇宫看守

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

  8. 皇宫看守【SGOI-2】

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

  9. 1077. 皇宫看守

    太平王世子事件后,陆小凤成了皇上特聘的御前一品侍卫. 皇宫各个宫殿的分布,呈一棵树的形状,宫殿可视为树中结点,两个宫殿之间如果存在道路直接相连,则该道路视为树中的一条边. 已知,在一个宫殿镇守的守卫不 ...

最新文章

  1. Linux运维跳槽必备的40道面试精华题
  2. Java日志体系总结
  3. js 读取flask后台变量
  4. 杀毒软件全免费遭厂家“抵制”
  5. linux中项目部署和日志查看
  6. 各种数据库的批量插入操作_Oracle
  7. 简单的签到代码_【SAS小恩的代码段】02样本分布、两群体与组合差异性检定
  8. JSON文件导入Unity3d中是空的的问题
  9. FIS如何成为制霸北美的金融科技航母?丨亿欧解案例
  10. 机器学习的偏差-方差分解
  11. 惊讶!一行Python代码让图形秒变「手绘风」
  12. 二进制部署Kubernetes v1.13.4 HA可选 1
  13. 整型和bcd的对应关系_微信与多闪之争背后,好友关系链到底是如何窃取的?
  14. like语句太慢 sqlserver_MySQL Like模糊查询速度太慢如何解决
  15. Android各版本对应的SDK及JDK版本要求
  16. CSS定位布局流和网络请求引入
  17. 人工智能训练师开始报名了,可评职称、拿补助
  18. mysql创建数据库(详细)
  19. Win10 C盘爆红找出edb文件146G,删除后又出现如何解决
  20. 【选型指南】数字源表/源测量单元/SMU选型的7个重要指标

热门文章

  1. android 10bit,作为“普通用户” 我们为什么建议你不强求10bit屏幕?
  2. MLOps极致细节:16. Azure ML Pipeline(机器学习管道),Azure Compute Instance搭建与使用
  3. hashcode返回值可能为负数
  4. 时序分析creat_clock约束命令
  5. 春招来了,如何正确使用领英超高效招聘海外员工、挖掘人才?
  6. SQL创建日历 包含年月日/周/星期几
  7. error C2365: : redefinition:previous definition was
  8. 【JavaScript】图片的懒加载
  9. 小扎动刀!Meta启动史上最大规模裁员,数千人将失业
  10. ORACLE和MYSQL的九大区别