洛谷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.)

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<vector>
  4. using namespace std;
  5. int r()
  6. {
  7. int x=,y=;;char ch;
  8. ch=getchar();
  9. while(ch<''||ch>'') {if(ch=='-') y=-;ch=getchar();}
  10. while(ch>=''&&ch<='') {x=(x<<)+(x<<)+ch-'';ch=getchar();}
  11. return x*y;
  12. }
  13. int n;
  14. int num[];
  15. bool ff[];
  16. vector<int> son[];
  17. int root;
  18. void read()
  19. {
  20. n=r();
  21. for(int i=;i<n;i++)
  22. {
  23. i=r();
  24. num[i]=r();
  25. for(int j=;j<=num[i];j++)
  26. {
  27. int x=r();
  28. son[i].push_back(x);
  29. ff[x]=;
  30. }
  31. }
  32. while(ff[root]) root++;
  33. }
  34. int f[][];
  35. void dp(int x)
  36. {
  37. f[x][]=;
  38. f[x][]=;
  39. if(num[x]==) return ;
  40. for(int i=;i<num[x];i++)
  41. {
  42. int y=son[x][i];dp(y);
  43. f[x][]+=f[y][];
  44. f[x][]+=min(f[y][],f[y][]);
  45. }
  46. }
  47. int main()
  48. {
  49. read();
  50. dp(root);
  51. int ans=min(f[root][],f[root][]);
  52. printf("%d",ans);
  53. return ;
  54. }

随机推荐

  1. 9-1进程,进程池和socketserver

    一 进程: # 什么是进程 : 运行中的程序,计算机中最小的资源分配单位# 程序开始执行就会产生一个主进程# python中主进程里面启动一个进程 —— 子进程# 同时主进程也被称为父进程# 父子进程 ...

  2. SDUT-2132_数据结构实验之栈与队列二:一般算术表达式转换成后缀式

    数据结构实验之栈与队列二:一般算术表达式转换成后缀式 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 对于一个基于二元运 ...

  3. 解决大数据难题 阿里云MaxCompute获科技大奖

    摘要: 据介绍,MaxCompute(大规模分布式的数据计算平台)是国内最早自研的大数据计算平台之一,主要应用于大规模数据处理场景.目前,这项源自浙江.解决世界级难题的成果已拥有EB(百京)级别的数据 ...

  4. 命名分组(?<name>....)

    捕获组分为: 普通捕获组(Expression) 命名捕获组(?Expression) 普通捕获组 从正则表达式左侧开始,每出现一个左括号"("记做一个分组,分组编号从 1 开始. ...

  5. ORACLE| ORACLE基础语法汇总

    创 ORACLE| ORACLE基础语法汇总 2018-07-18 16:47:34 YvesHe 阅读数 9141更多 分类专栏: [数据库]   版权声明:本文为博主原创文章,遵循CC 4.0 B ...

  6. hdu 1289 Hat’s IEEE

    Problem - 1289 好题.其实就是模拟IEEE754的格式,不过要注意的是,这里用的32位是float,用double就不对了. 代码如下: #include <cstdio> ...

  7. js 过滤富文本标签数据

    var str = '<p><code>uni-app</code> 完整支持 <code>Vue</code> 实例的生命周期,同时还新增 ...

  8. 字符串编辑距离(Edit Distance)

    一.问题描述定义字符串编辑距离(Edit Distance),是俄罗斯科学家 Vladimir Levenshtein 在 1965 年提出的概念,又称 Levenshtein 距离,是指两个字符串之 ...

  9. laravel5.*安装使用Redis以及解决Class 'Predis\Client' not found和Fatal error: Non-static method Redis::set() cannot be called statically错误

    https://phpartisan.cn/news/35.html laravel中我们可以很简单的使用Redis,如何在服务器安装Redis以及原创访问你们可以访问Ubuntu 设置Redis密码 ...

  10. Codeforces Round #189 (Div. 1 + Div. 2)

    A. Magic Numbers 不能出现连续的3个4,以及1.4以外的数字. B. Ping-Pong (Easy Version) 暴力. C. Malek Dance Club 考虑\(x\)二 ...