警卫安排(dp好题)
警卫安排(guard)
【题目描述】
一个重要的基地被分为 n 个连通的区域。出于某种神秘的原因,这些区域以一个区域为核心,呈
一颗树形分布。
在每个区域安排警卫所需要的费用是不同的,而每个区域的警卫都可以望见其相邻的区域,只要
一个区域被一个警卫望见或者是安排有警卫,这个区域就是安全的。你的任务是:在确保所有区域都
是安全的情况下,找到安排警卫的最小费用。
【输入格式】
第一行 n,表示树中结点的数目。
接下来的 n 行描述了n 个区域的信息,每一行包含的整数依次为:区域的标号i(0<i<=n),在
区域i 安排警卫的费用k,区域i 的子结点数目m,接下来m 个数为区域i 的子结点编号。
一开始被样例误导,样例是按照1到n的顺序来给信息的,然后我的输入也默认成这样,结果爆0了。修改过后也只过了2个点。虽然培训时讲过这题,但是不自己写一遍还真是理解不够透彻。。
F[node][1],F[node][2],F[node][3]分别表示 监控以node为根的树,在node放警卫/node被他的儿子监控(他自己没有警卫)/node被他的父亲监控。
F[node][1]=sum{F[node.child][3]}+cost[node];
F[node][2]比较麻烦,首先既然node被儿子管着,那么有限制“至少有一个儿子是放了警卫的”,因此先假设没有这个限制,那么F[node][2]=sum{min{F[node.child][1],F[node.child][2]}},接着枚举哪个儿子一定放了警卫,假设是编号为k的儿子,那么F[node][2]还要减去min{F[k][1],F[k][2]}再加上F[k][1];
一开始写成F[node][3]=min{F[node][1],F[node][2]};但仔细揣摩这样是不对的。node被父亲管着,不一定要被他的儿子管着,或者他自己有警卫,比如他自己和儿子都没警卫,但是儿子的儿子有警卫也是可行的。所以只要考虑他的儿子被管住的情况,也就是F[node][3]=sum{min{F[node.child][1],F[node.child][2]}},再和F[node][1]比较取最小值。
此题不易,必须要有清晰的头脑才能把关系理清楚。
警卫安排(dp好题)的更多相关文章
- 2018.09.06 警卫安排(树形dp)
描述 太平王世子事件后,陆小凤成了皇上特聘的御前一品侍卫. 皇宫以午门为起点,直到后宫嫔妃们的寝宫,呈一棵树的形状:有边直接相连的宫殿可以互相望见.大内保卫森严,三步一岗,五步一哨,每个宫殿都要有人全 ...
- dp百题大过关(第一场)
好吧,这名字真是让我想起了某段被某教科书支配的历史.....各种DP题层出不穷,不过终于做完了orz 虽然各种手糊加乱搞,但还是要总结一下. T1 Monkey Banana Problem 这 ...
- NKOJ1472 警卫安排
P1472警卫安排 时间限制 : 10000 MS 空间限制 : 65536 KB 问题描述 一个重要的基地被分为n个连通的区域.出于某种神秘的原因,这些区域以一个区域为核心,呈一颗树形分布. ...
- DP百题练(一)
目录 DP百题练(一) 线性 DP 简述 Arithmetic Progressions [ZJOI2006]物流运输 LG1095 守望者的逃离 LG1103 书本整理 CH5102 移动服务 LG ...
- 贪心/构造/DP 杂题选做Ⅱ
由于换了台电脑,而我的贪心 & 构造能力依然很拉跨,所以决定再开一个坑( 前传: 贪心/构造/DP 杂题选做 u1s1 我预感还有Ⅲ(欸,这不是我在多项式Ⅱ中说过的原话吗) 24. P5912 ...
- ACM :漫漫上学路 -DP -水题
CSU 1772 漫漫上学路 Time Limit: 1000MS Memory Limit: 131072KB 64bit IO Format: %lld & %llu Submit ...
- [poj2247] Humble Numbers (DP水题)
DP 水题 Description A number whose only prime factors are 2,3,5 or 7 is called a humble number. The se ...
- poj 3254 状压dp入门题
1.poj 3254 Corn Fields 状态压缩dp入门题 2.总结:二进制实在巧妙,以前从来没想过可以这样用. 题意:n行m列,1表示肥沃,0表示贫瘠,把牛放在肥沃处,要求所有牛不能相 ...
- POJ 1155 TELE 背包型树形DP 经典题
由电视台,中转站,和用户的电视组成的体系刚好是一棵树 n个节点,编号分别为1~n,1是电视台中心,2~n-m是中转站,n-m+1~n是用户,1为root 现在节点1准备转播一场比赛,已知从一个节点传送 ...
随机推荐
- Python学习(7)数字
目录 Python 数字 Python 数字类型转换 Python 数学函数 Python 随机数函数 Python 三角函数 Python 数学常量 Python 数字 Python 数字数据类型用 ...
- Selected SVN connector library is not available or cannot be loaded
1.错误描述 The following data will be sent: ------ STATUS ------ pluginId org.eclipse.team.sv ...
- java 嵌套类 简记
嵌套类包括:1)静态嵌套类 (static 修饰符) 2)非静态嵌套类(又叫内部类) 其中内部类又可分为三种: 其一.在一个类(外部类)中直接定义的内部类: 其二.在一个方法(外部类的方法)中定义的 ...
- phalcon: 视图集成(内嵌模板)
当一个网站把不同的模板分割成:头部,中间区域,底部时,我们就需要在不同的[中间区域]页面引入相同的头部跟底部.引入有2种方法, 一种是:在controller中调用: $this->view-& ...
- 添加无线服务wzcsvc服务,Eventlog服务
<添加eventlog服务.reg> Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentCont ...
- dede调用文章里的图片
{dede:arclist row='6' orderby='pubdate' typeid='5' idlist='' channelid='1'} <li><a href='[f ...
- innodb_fast_shutdown中值为1或者2的区别是?
innodb_fast_shutdown=0 , 1 , 2时的意思分别是 0 把buffer pool中的脏页刷到磁盘和合并insert buffer,当然包括redo log也会写到磁盘中. 2 ...
- C++从键盘输入文件结束符
当我们使用一个istream对象作为条件时,其效果是检测流的状态.如果流是有效的,即流未遇到错误,那么检测成功.当遇到文件结束符,或遇到一个无效输入时(例如需要将输入读到一个int变量 ...
- selenium+python笔记1
#!/usr/bin/env python # -*- coding: utf-8 -*- """@desc: 讲讲web项目中常用的方法属性 webdriver 提供了 ...
- [Java] java文件读写操作大全
一.获得控制台用户输入的信息 //可以返回用户输入的信息,不足之处在于不支持中文输入,有待进一步改进 public String getInputMessage() throws IOExceptio ...