题目描述

问题描述:

  太平王世子事件后,陆小凤成了皇上特聘的御前一品侍卫。

  皇宫以午门为起点,直到后宫嫔妃们的寝宫,呈一棵树的形状;某些宫殿间可以互相望见。大内保卫森严,三步一岗,五步一哨,每个宫殿都要有人全天候看守,在不同的宫殿安排看守所需的费用不同。

  可是陆小凤手上的经费不足,无论如何也没法在每个宫殿都安置留守侍卫。

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

输入输出格式

输入格式:

数据输入:输入数据由文件名为INPUT.TXT的文本文件提供。输入文件中数据表示一棵树,描述如下:

  第1行 n,表示树中结点的数目。

  第2行至第n+1行,每行描述每个宫殿结点信息,依次为:该宫殿结点标号i(0<i<=n),在该宫殿安置侍卫所需的经费k,该边的儿子数m,接下来m个数,分别是这个节点的m个儿子的标号r1,r2,...,rm。

  对于一个n(0 < n <= 1500)个结点的树,结点标号在1到n之间,且标号不重复。

输出格式:

数据输出:输出到OUTPUT.TXT文件中。输出文件仅包含一个数,为所求的最少的经费。

解题思路:

这是一道树形dp题,递归枚举每个结点,j1为i的子节点,三种情况:

1.d[i][0]表示i结点由父节点来看守,d[i][0] += min(d[j1][1], d[j1][2]);

2.d[i][1]表示由子节点来看守,d[i][1]=min(d[i][1],不由父节点看守的子节点和-最小不由父节点看守子节点的值);

3.d[i][2]表示由自己看守,d[i][2]+=min(min(d[j1][0],d[j1][1]),d[j1][2])

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,m,son,a[2000][2000],d[2000][3],id,i,j,v[2000],rood,w[2000];
void dp(int r)
{int k,sum=0,j1;d[r][2]=w[r];for(k=a[r][0];k>=1;k--){j1=a[r][k];dp(j1);d[r][0] += min(d[j1][1], d[j1][2]);d[r][2]+=min(min(d[j1][0],d[j1][1]),d[j1][2]);sum+=min(d[j1][1],d[j1][2]);}d[r][1]=0x3f3f3f3f;for(k=a[r][0];k>=1;k--){j1=a[r][k];d[r][1]=min(d[r][1],sum-min(d[j1][1],d[j1][2])+d[j1][2]); }
}
int main()
{cin>>n;memset(v,1,sizeof(v));for(i=1;i<=n;i++){scanf("%d",&id);scanf("%d%d",&w[id],&m);a[id][0]=m;for(j=1;j<=m;j++) {scanf("%d",&a[id][j]);v[a[id][j]]=0;}}for(i=1;i<=n;i++)if(v[i]){rood=i;break;}dp(rood);cout<<min(d[rood][1],d[rood][2]);return 0;
}

皇宫看守【SGOI-2】相关推荐

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

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

  2. Acwing 1077.皇宫看守

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

  3. Acwing 1077. 皇宫看守

    参考题目:Acwing 1077. 皇宫看守 题意 给定一个树,求覆盖所有点的最少花费. 算法:树形DP 时间复杂度: O ( n ) O(n) O(n) (每个点只被搜索一次) f 数组含义: f[ ...

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

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

  5. CIA1 皇宫看守(树形dp)

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

  6. 皇宫看守(guard)

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

  7. TYWZOJ[1580]皇宫看守

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

  8. 1077. 皇宫看守

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

  9. AcWing 1077. 皇宫看守(详解)

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

最新文章

  1. 基于深度神经网络的风电场超短期功率预测系统【数据故事计划最佳学术奖】...
  2. 解决xmarks不能用的方法
  3. linux中tcp连接内核参数调优somaxconn
  4. step5 . day2 网络编程 基于TPC协议的网络编程流程及API
  5. GL_RGBA和GL_RGB的差别
  6. 蓝桥杯vip答案java_Java实现 蓝桥杯VIP 算法训练 麦森数
  7. Assembly Manifest 通俗简易手册
  8. 2018-03-02 GNUtls 对 TPM1.2 的原生支持
  9. python爬虫下载模块_python爬虫模块之HTML下载模块
  10. 解决在DHCP环境下私自指定IP和私自搭建DHCP服务器的方法
  11. 如何证明一个问题是NP-Hard或NP-Complete?
  12. Pr 入门教程如何修改过渡效果设置?
  13. 大数据对于企业的价值,主要体现在哪几个方面?
  14. 牵手爱情,绎一份不了情缘
  15. 错误 E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)
  16. win10系统找不到telnet服务器,win10系统找不到Telnet服务的解决教程
  17. 秋招手撕代码:4bit转换为1bit,且是慢时钟域到快时钟域
  18. 江城武汉,一座离开后会怀念的城市
  19. 代码解读六 文件名“Ano_AltCtrl.c”
  20. PS学习笔记(05)

热门文章

  1. 想要接触网络安全,应该怎么入门学习?
  2. python中类的命名规则_python命名规则
  3. html li span 居中,如何实现HTML span标签的居中和右对齐
  4. 《地理信息系统原理》笔记/期末复习资料(1. 概述)
  5. Java+微信公众号开发学习总结(一)
  6. Java定时注解@Scheduled的使用,fixedDelay,fixedRate,cron的使用
  7. 图像特征提取(一)——什么是特征点、特征描述、特征匹配
  8. 基础篇——Linux系统互传文件scp指令的使用
  9. 删除的文件怎样恢复?帮你解决烦恼
  10. OpenJWeb网上商城快递查询第三方接口的实现