洛谷loj

Desription

Bob 喜欢玩电脑游戏,特别是战略游戏。但是他经常无法找到快速玩过游戏的方法。现在他有个问题。

现在他有座古城堡,古城堡的路形成一棵树。他要在这棵树的节点上放置最少数目的士兵,使得这些士兵能够瞭望到所有的路。

注意:某个士兵在一个节点上时,与该节点相连的所有边都将能被瞭望到。

请你编一个程序,给定一棵树,帮 Bob 计算出他最少要放置的士兵数。

Sol

状态:

f[i][0]表示i不放士兵时,以i为根的子树所需要的最小士兵数

f[i][1]表示i放士兵时,以i为根的子树所需要的最小士兵数

转移:

f[i][0]:i不放,那么它的子结点都要放

f[i][1]:i放,那么它的子结点可放可不放,取小即可

感觉比较板子题QwQ

Code

(It was written long long ago.)

 #include<iostream>
#include<cstdio>
#include<vector>
using namespace std;
int r()
{
int x=,y=;;char ch;
ch=getchar();
while(ch<''||ch>'') {if(ch=='-') y=-;ch=getchar();}
while(ch>=''&&ch<='') {x=(x<<)+(x<<)+ch-'';ch=getchar();}
return x*y;
}
int n;
int num[];
bool ff[];
vector<int> son[];
int root;
void read()
{
n=r();
for(int i=;i<n;i++)
{
i=r();
num[i]=r();
for(int j=;j<=num[i];j++)
{
int x=r();
son[i].push_back(x);
ff[x]=;
}
}
while(ff[root]) root++;
}
int f[][];
void dp(int x)
{
f[x][]=;
f[x][]=;
if(num[x]==) return ;
for(int i=;i<num[x];i++)
{
int y=son[x][i];dp(y);
f[x][]+=f[y][];
f[x][]+=min(f[y][],f[y][]);
}
}
int main()
{
read();
dp(root);
int ans=min(f[root][],f[root][]);
printf("%d",ans);
return ;
}

随机推荐

  1. 最长公共子序列(LCS)、最长递增子序列(LIS)、最长递增公共子序列(LICS)

    最长公共子序列(LCS) [问题] 求两字符序列的最长公共字符子序列 问题描述:字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列.令给定的字 ...

  2. HTML--CSS样式表--基本概念(超链接的状态)

    样式表的基本概念 一.样式表的分类 1.内联样式表 和HTML联合显示,控制精确,但是可重用性差,冗余较多. 例:<p style="font-size:14px;"> ...

  3. Python--day70--ORM查询练习

    ORM查询练习: import os import sys if __name__ == '__main__': # 加载Djang00项目的配置信息 os.environ.setdefault(&q ...

  4. excel中如何筛选功能的使用

    excel中如何筛选功能的使用 excel是一款数据处理工具,可以在众多的数据中找到想要的经过处理之后的数据,而最直接方便的功能就是筛选.请阅读下文,了解如何对数据进行筛选. 如下图所示的学生成绩中, ...

  5. hdu 1128 Self Numbers

    Self Numbers Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)To ...

  6. HDU 1072

    题意:给你一个迷宫,2代表你当前的位置,0代表墙,1代表可走的路,3代表出口,4代表的是炸弹的重置点,一开始炸弹的倒计时设置为6,每走一步时间减少1,倒计时到0的时候走到3或者4都不可以,问走出迷宫的 ...

  7. Spring Data JPA查询指定列,并返回实体(改)

    现有PostEntiy实力,包含各种属性,如: /** * @Auther: DingShuo * @Date: 2018/7/18 11:09 * @Description: */ @Entity ...

  8. CodeForces 1204E"Natasha, Sasha and the Prefix Sums"(动态规划 or 组合数学--卡特兰数的应用)

    传送门 •参考资料 [1]:CF1204E Natasha, Sasha and the Prefix Sums(动态规划+组合数) •题意 由 n 个 1 和 m 个 -1 组成的 $C_{n+m} ...

  9. Ubuntu 19.04安装phpipam软件

    1ftp下载xampp2安装xampp chmod 777sudo ./xampp.run3,ftp phpipam.tar.gz 解压 ./opt/lampp/www/phpipam/cp conf ...

  10. H5 拖拽元素

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...