http://poj.org/problem?id=1463

题意:有一棵n个结点的树,要在这棵树上放士兵守卫,一个士兵可以守卫自己所在的位置以及与之相邻的点。问最少放多少个士兵?

题解:对于每个点,两种情况,放与不放,放则计数1,不放则计数0。

对于某个点x

如果不放,则与他相邻的点必然要放,否则谁来守卫点x?

如果放,则与他相邻的点可放可不放。

首先要造一棵树,从根节点对所有儿子节点深搜。

dp[i][0]和dp[i][1]表示 包括i本身 和 以i为父节点的子孙结点的摆放数 的累计最小值。

对于样例1,可以造出如下这样的树,0是根结点,指向儿子。

 #include<stdio.h>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<math.h>
#include<string>
#include<map>
#include<queue>
#include<stack>
#include<set>
#define ll long long
#define inf 0x3f3f3f3f
using namespace std; int n,m;
int dp[][];
vector<int>son[];
bool vis[]; void dfs(int x)
{
dp[x][]=;
dp[x][]=;///每次进入深搜,初始化这个点是可以选或者不选
for(int i=;i<son[x].size();i++)
{
int y=son[x][i];
dfs(y);
dp[x][]+=dp[y][]; ///如果不选,那么谁来守卫?那儿子就需要守卫
dp[x][]+=min(dp[y][],dp[y][]);///如果选择守卫,则儿子可以选择守卫或者不守卫
}
} int main()
{
while(scanf("%d",&n)!=EOF)
{
for(int i=;i<n;i++)
son[i].clear();
memset(vis,false,sizeof(vis));
memset(dp,,sizeof(dp));
for(int i=;i<n;i++)
{
int x,y;
scanf("%d:(%d)",&x,&m);
while(m--)
{
scanf("%d",&y);
son[x].push_back(y);
vis[y]=true;///y有父亲,不能作为根结点
}
}
for(int i=;i<n;i++)
{
if(!vis[i])///找到没有儿子的结点作为根节点
{
dfs(i);
printf("%d\n",min(dp[i][],dp[i][]));///取根节点的最小情况
break;
}
}
}
return ;
}

POJ1463-Strategic game-(树形dp)的更多相关文章

  1. poj1463 Strategic game[树形DP]

    求一棵树每条边都被选上的点覆盖掉的最少选点数. 一条边被覆盖掉,必须他父亲和儿子中选一个..这不就是比NOIP2018D2T3还裸的暴力么.水掉. lyd给的练习题都什么**玩意儿.. code不挂了 ...

  2. POJ1463:Strategic game(树形DP)

    Description Bob enjoys playing computer games, especially strategic games, but sometimes he cannot f ...

  3. Strategic game树形DP解法(Poj1463,Uva1292)

    已经写过本题用二分图的做法,见这儿. 本题的图是一棵树,求最小点覆盖也可以用树形DP的做法. 定义状态f[0/1][u]表示以u为根的子树,u选取/不选最少需要选取多少点来覆盖. 显然 f[0][u] ...

  4. HDU 1054 Strategic Game (树形dp)

    题目链接 题意: 给一颗树,用最少的点覆盖整棵树. 每一个结点可以防守相邻的一个边,求最少的点防守所有的边. 分析: 1:以当前节点为根节点,在该节点排士兵守护道路的最小消耗.在这种情况下,他的子节点 ...

  5. UVa 1292 - Strategic game (树形dp)

    本文出自   http://blog.csdn.net/shuangde800 题目链接: 点击打开链接 题目大意 给定一棵树,选择尽量少的节点,使得每个没有选中的结点至少和一个已选结点相邻. 思路 ...

  6. hdu1054 Strategic Game 树形DP

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1054 思路:树形DP,用二分匹配也能解决 定义dp[root][1],表示以root 为根结点的子树且 ...

  7. POJ 1463 Strategic game(树形DP入门)

    题意: 给定一棵树, 问最少要占据多少个点才能守护所有边 分析: 树形DP枚举每个点放与不放 树形DP: #include<cstdio> #include<iostream> ...

  8. Strategic game(树形DP入门)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1054 题目大意:一棵树,要放置哨兵,要求最少放置多少哨兵能监视到所有的结点 题目分析: 放置哨兵无非两 ...

  9. poj1463 Strategic game【树形DP】

    Strategic game Time Limit: 2000MS   Memory Limit: 10000K Total Submissions: 9582   Accepted: 4516 De ...

  10. Strategic game(POJ 1463 树形DP)

    Strategic game Time Limit: 2000MS   Memory Limit: 10000K Total Submissions: 7490   Accepted: 3483 De ...

随机推荐

  1. c# DataGridView在使用DataSource时,只显示指定的列或禁止自动生成列

    可通过设置DataGridView控件的AutoGenerateColumns属性来处理. //禁止自动生成列,以下场景会用到:数据源的列超过需要展示的列 this.gridDevice.AutoGe ...

  2. vue cli 3 那些事儿

    配置 eslint 可在 package.json 中的 eslintConfig 中配置,比如允许在代码中使用 console,package.json 中配置如下 ... "eslint ...

  3. ipxe(可选):winboot:网络引导(启动)wim格式的windows PE系统:配置文件写法

    ipxe 无盘[网络]引导wim格式的pe系统 wimboot引导程序需要为其提供4个内核参数 bcd bootmgr boot.sdi boot.wim 所需文件附件 以下是我的可用的ipxe的配置 ...

  4. WPF 精修篇 静态资源

    原文:WPF 精修篇 静态资源 在WPF中 如果设置好了一个控件样式或者矩形样式 如果Copy出一个新的 那么样式也会双份 比如 下面的矩形 我定义好了一个 Copy 以后 就出现一个新的 但是改变样 ...

  5. [转载].NET Core 轻量级模板引擎 Mustachio

    .NET Core 轻量级模板引擎 Mustachio 晓晨Master 一. 前言 Mustachio 是一款轻量级且强大的模板引擎,可以用在网页渲染.代码生成器等需要模板引擎的场景.我用它是用在配 ...

  6. SqlDbx连接oracle(无需安装Oracle客户端)

    下载地址:https://download.csdn.net/download/xzplinke/10428957 解压SqlDbx.zip,将SqlDbx放到C:盘根目录(C:\SqlDbx 路径是 ...

  7. ASP.NET MVC IOC 之 Autofac(二)

    在上一章节,我们已经知道了再控制器中如何注入以及使用了.这一章,我们重点讲解下,如何在服务层中使用. 我们新定义一个教师类,在服务层中,通过这个教师类服务层,获取学生的年龄.实现在教师类的服务层中调用 ...

  8. Laravel处理session(会话)的方法详解

    在Web应用程序中,有必要识别跨越请求的用户并为每个用户保存数据,为此,像Laravel这样的框架提供了一种称为会话的机制.本篇文章就来为大家介绍关于Laravel处理session(会话)的方法. ...

  9. javascript DOM拓展

    针对JS高级程序设计这本书,主要是理解概念,大部分要点源自书内.写这个主要是当个笔记加总结 存在的问题请大家多多指正! DOM拓展 1选择符 API 1.1 querySelector() 由docu ...

  10. nodeJs 报maximum call stack size exceeded js

    先看错误 查了下资料说是什么js堆栈异常,是递归造成的啥的,但我程序里没用到啥递归,整了老半天将collection-repeat换成ng-repeat然后就好啦,具体原因待探讨.