Vijos1144小胖守皇宫【树形DP】
皇宫看守
太平王世子事件后,陆小凤成了皇上特聘的御前一品侍卫。
皇宫以午门为起点,直到后宫嫔妃们的寝宫,呈一棵树的形状;某些宫殿间可以互相望见。大内保卫森严,三步一岗,五步一哨,每个宫殿都要有人全天候看守,在不同的宫殿安排看守所需的费用不同。
可是陆小凤手上的经费不足,无论如何也没法在每个宫殿都安置留守侍卫。
编程任务:帮助陆小凤布置侍卫,在看守全部宫殿的前提下,使得花费的经费最少。
输入格式:
输入数据由文件名为Guard.in的文本文件提供。输入文件中数据表示一棵树,描述如下:
第1行 n,表示树中结点的数目。
第2行至第n+1行,每行描述每个宫殿结点信息,依次为:该宫殿结点标号i(0<i<=n),在该宫殿安置侍卫所需的经费k,该边的儿子数m,接下来m个数,分别是这个节点的m个儿子的标号r1,r2,...,rm。
对于一个n(0 < n <= 1500)个结点的树,结点标号在1到n之间,且标号不重复。
输出格式:
输出文件仅包含一个数,为所求的最少的经费。
样例输入:
6 1 30 3 2 3 4 2 16 2 5 6 3 5 0 4 4 0 5 11 0 6 5 0
样例输出:
25
树形动规题,对每个节点开f[2][2]表示状态下的,
f[1][1]表示该节点有人,能守卫;f[0][1]表示该节点无人,但能被子节点守卫;f[0][0]表示该节点无人,不能被子节点守卫;f[1][0]无意义。
然后动规:f[0][0]=∑子节点f[0][1];
f[1][1]=∑子节点三个状态中最小的一个;
f[0][1]=保证子节点中至少有一个有人的状态下子节点的f[1][1]与f[0][1]的累加(f[0][0]不能算进去,因为该节点及其子节点均无人)
#include<cstdio>
#include<iostream>
using namespace std;
struct node{
],f[][],w;///f[GuardPresence][Guarded]
}T[];
int n;
];
inline void dfs(int x)
{
;i<=T[x].size;i++)
{
dfs(T[x].son[i]);
T[x].f[][]+=T[T[x].son[i]].f[][];
T[x].f[][]+=min(T[T[x].son[i]].f[][],min(T[T[x].son[i]].f[][],T[T[x].son[i]].f[][]));
}
T[x].f[][]+=T[x].w;
,p=;
bool flag=false;
;i<=T[x].size;i++) ][]<=T[T[x].son[i]].f[][]){flag=true;break;}
if(!flag)
{
;i<=T[x].size;i++) ][]-T[T[x].son[i]].f[][])
{
tmp=T[T[x].son[i]].f[][]-T[T[x].son[i]].f[][];
p=i;
}
T[x].f[][]+=T[T[x].son[p]].f[][];
;i<=T[x].size;i++) ][]+=T[T[x].son[i]].f[][];
}
;i<=T[x].size;i++)T[x].f[][]+=min(T[T[x].son[i]].f[][],T[T[x].son[i]].f[][]);
return;
}
int main()
{
int num;
T[].f[][]=T[].f[][]=;
scanf("%d",&n);
;i<=n;i++)
{
scanf("%d",&num);
scanf("%d%d",&T[num].w,&T[num].size);
;j<=T[num].size;j++)
{
scanf("%d",&T[num].son[j]);
havef[T[num].son[j]]=;
}
}
int root;
;i<=n;i++) ){root=i;break;}
dfs(root);
printf(][],T[root].f[][]));
;
}
Vijos1144小胖守皇宫【树形DP】的更多相关文章
- [vijos1144]小胖守皇宫<树形dp>
题目链接:https://vijos.org/p/1144 woc我竟然A了,这道经典的树形dp或者说是树形dp的入门题我终于过了,虽然之前做过一些树形dp的题,但是这题开始还是一脸懵逼,dp方程如何 ...
- 【树形dp】vijos1144小胖守皇宫
细节很精妙 描述 huyichen世子事件后,xuzhenyi成了皇上特聘的御前一品侍卫. 皇宫以午门为起点,直到后宫嫔妃们的寝宫,呈一棵树的形状:某些宫殿间可以互相望见.大内保卫森严,三步一岗,五步 ...
- Vijos 1144 小胖守皇宫 【树形DP】
小胖守皇宫 描述 huyichen世子事件后,xuzhenyi成了皇上特聘的御前一品侍卫. 皇宫以午门为起点,直到后宫嫔妃们的寝宫,呈一棵树的形状:某些宫殿间可以互相望见.大内保卫森严,三步一岗,五步 ...
- 树形dp 之 小胖守皇宫
题目描述 huyichen世子事件后,xuzhenyi成了皇上特聘的御前一品侍卫. 皇宫以午门为起点,直到后宫嫔妃们的寝宫,呈一棵树的形状:有边相连的宫殿间可以互相望见.大内保卫森严,三步一岗,五步一 ...
- 小胖守皇宫(VIJOS P1144 )题解
题目描述 huyichen世子事件后,xuzhenyi成了皇上特聘的御前一品侍卫. 皇宫以午门为起点,直到后宫嫔妃们的寝宫,呈一棵树的形状:某些宫殿间可以互相望见.大内保卫森严,三步一岗,五步一哨,每 ...
- vijos 小胖守皇宫
点击打开题目 树形DP 显然会想到某个点放或不放守卫来定义状态,但在不放的情况下,需要分类讨论是父亲放还是一个儿子放,于是定义以下状态: f[root][0]表示自己不放,父亲也不放 f[root][ ...
- 【vijos1144】小胖守皇宫(树形DP)
描述 huyichen世子事件后,xuzhenyi成了皇上特聘的御前一品侍卫. 皇宫以午门为起点,直到后宫嫔妃们的寝宫,呈一棵树的形状:某些宫殿间可以互相望见.大内保卫森严,三步一岗,五步一哨,每个宫 ...
- vijos1144(小胖守皇宫)
也是ural1039 描述 huyichen世子事件后,xuzhenyi成了皇上特聘的御前一品侍卫. 皇宫以午门为起点,直到后宫嫔妃们的寝宫,呈一棵树的形状:某些宫殿间可以互相望见.大内保卫森严,三步 ...
- 树形DP 复习
树形DP 树形DP:建立在树上的动态规划 一般有两种传递方式:根→叶或叶→根 前者出现在换根DP中,一般操作是求出某一个点的最优解,再通过这一个点推知其他点的最优解. 后者是树形DP的常见形式,一般树 ...
随机推荐
- 数组&&函数数组
数组:一次性定义多个同类型的变量,数组在 内存中存储空间必须是连续的(查询比较快)定义数组: int a[]; int[] a;分配空间: a=new int[5]; 自动为数组元素赋以默认值 a[0 ...
- 基于DDD的.NET开发框架ABP实例,多租户 (Sass)应用程序,采用.NET MVC, Angularjs, EntityFramework-介绍
介绍 基于ABPZERO的多租户 (Sass)应用程序,采用ASP.NET MVC, Angularjs-介绍 ASP.NET Boilerplate作为应用程序框架. ASP.NET MVC和ASP ...
- 用sqlyog迁移mysql数据库
本人大学大学基本就学怎么打游戏了,游戏玩的还不太好,大三的时候突然觉醒报了某培训,然后就出来工作了.这导致许多东西很不扎实,都是在工作中慢慢摸索.今天处理了一个关于mysql数据库迁移的问题,好好总结 ...
- 安装msdn出现的问题及解决
安装msdn出现的问题及解决 用xx.iso 镜象文件安装 运行第一个镜象文件的setup.exe安装到一部分提示:安装程序无法打开文件 C:\Documents and Settings\empty ...
- css伪元素用法大全
本文主要讲解css伪元素的用法,有需要的朋友可以阅读此文.本文讲解的伪元素有:before,after. 什么是伪元素(Pseudo element)? 伪元素不是真正的元素,不存在与文档之中,所以j ...
- java学习之路
先来说一说我和it之间的不解之缘.准确来说,我接触it是从大二是我买的第一个手机开始的(国产的,展讯平台,能够运行mrp虚拟机),那时候还没有智能手机,或者说还不够普及,总之就是买不起.一次偶然的机会 ...
- struts2.5框架使用通配符指定方法(常见错误)
在学习struts框架时经常会使用到通配符调用方法,如下: <package name="shop" namespace="/" extends=&quo ...
- ios的300ms点击延时问题
一.什么是ios的300ms点击延时问题 ios的移动端页面对点击事件有300ms延时. 二.为什么存在这个问题 这要追溯至 2007 年初.苹果公司在发布首款 iPhone 前夕,遇到一个问题 —— ...
- C#调用PB写的com组件dll
背景 小编为了使用C#去模仿PB代码的加密算法,结果发现PB算法中,的long类型只有21亿,实际上传入的数值达到了78亿,造成了数据溢出,精度丢失的情况. 然而PB的算法已经使用C#不可以还原(C# ...
- Java面试05|MySQL及InnoDB引擎
1.InnoDB引擎索引 InnoDB支持的索引有以下几种: (1)哈希索引 (2)全文索引 (1)B+树索引 又可以分为聚集索引与辅助索引 索引的创建可以在CREATE TABLE语句中进行,也可以 ...