1463 -- Strategic game

题目大意:树上有n个点,每个点都可以放一枚棋子,每枚棋子可以影响到监管相邻的格子,问要使每个格子都受监管,最少需要多少棋子

1<=n<=1500

思路:对于每个点,我们可以选择放棋子或不放,如果放的话,那么他的子节点放不放都行,取最小值,如果不放,那么他的子节点就必须都要放,我们从下向上遍历,对于每个节点,放的话dp[u][1]=min(dp[v][1],dp[v][0]),不放的话dp[u][0]+=dp[v][1]

#include<iostream>
#include<cstdio>
using namespace std;
const int N = 1505;
int head[N], vis[N], in[N], dp[N][2];
int cnt = 0;
struct Edge
{int u, v, next;
}e[N * 2];
void addedge(int u, int v)
{e[++cnt].v = v;e[cnt].u = u;e[cnt].next = head[u];head[u] = cnt;
}//链式前向星存图
int n;
void dfs(int u)
{vis[u] = 1;dp[u][0] = 0;dp[u][1] = 1;//初始化当前状态for (int i = head[u]; ~i; i = e[i].next){int v = e[i].v;if (!vis[v]){          dfs(v);dp[u][0] += dp[v][1];//当前点不放dp[u][1] += min(dp[v][0], dp[v][1]);//当前点放}}
}
void init()
{for (int i = 0; i <= n; i++){head[i] = -1;vis[i] = dp[i][0] = dp[i][1] = in[i] = 0;}cnt = 0;
}
int main()
{while (~scanf("%d", &n)){init();for (int i = 0; i < n; i++){int u, m;scanf("%d:(%d)", &u, &m);for (int i = 1; i <= m; i++){int v;scanf("%d", &v);in[v]++;//统计入度来确定谁是根addedge(u, v);addedge(v, u);}}for (int i = 0; i < n; i++){if (!in[i])//入度为0的是根{dfs(i);printf("%d\n", min(dp[i][0], dp[i][1]));//对根的两种方案取最小值break;}               }}return 0;
}

Strategic game poj1463相关推荐

  1. poj1463 Strategic game

    1题目描述很简单..其实就是求最小点覆盖..但是...他明确说明是树..如果用矩阵存储..然后用匈牙利,显然不仅浪费空间.还浪费时间..TLE了... 然后用邻接表..可以AC了... 但是效率还是不 ...

  2. [POJ1463] Strategic game

    题目链接: 传送门 题目大意: Bob非常享受玩电脑游戏的过程,尤其是策略游戏,但是在有些时候,他因为不能在第一时间找到最佳的策略而十分伤心. 现在,他遇到了一个问题.他必须保卫一个中世纪的城市,有很 ...

  3. HDU——1054 Strategic Game

    Strategic Game Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  4. Strategic game(树的最小点覆盖)

    Strategic game 题意: 一个树,在一个节点放兵,周围的边就被守护,守护所有的边,问最少放多少兵 题解: 这种问题又称树的最小点覆盖 dp[x][1]以x为根的子树全被看住且在x上放置士兵 ...

  5. 【POJ - 1463】Strategic game (树上最小点覆盖,树形dp)

    题干: Bob enjoys playing computer games, especially strategic games, but sometimes he cannot find the ...

  6. UVA497 Strategic Defense Initiative【LIS+DP】

    "Commander! Commander! Please wake up commander!"     "- mmmph. What time is it?" ...

  7. 【论】Strategic sourcing selection for bike-sharing rebalancing: An evolutionary game approach

    Strategic sourcing selection for bike-sharing rebalancing: An evolutionary game approach 作者:Wei Gu , ...

  8. 转:Top 10 Strategic Technology Trends for 2019

    未来5年,可能会带来颠覆式变化的技术,不懂,先了解. 趋势1,自动化一切(Trend NO.1 :Autonomous Things) 趋势2,增强分析(Trend NO.2:Augmented An ...

  9. 高德纳2019十大战略科技趋势 - Gartner Top 10 Strategic Technology Trends for 2019

    来自Garnter发布<Top 10 Strategic Technology Trends for 2019>,本文仅翻译部分内容,有兴趣的同学可以自行阅读.翻译可能不准确,欢迎指正. ...

最新文章

  1. CSS里面position:relative与position:absolute 区别
  2. php 抽象类、接口和构析方法
  3. C#使用ServiceController控制windows服务
  4. JTable 失去焦点时取消编辑状态
  5. oracle赋予一个用户查询另一个用户中所有表
  6. oracle 时间集合,oracle 日期函数集合(集中版本)第2/2页
  7. python程序分析,用Python编写分析Python程序性能的工具的教程
  8. Jeecg社区wiki在开放,终于可以在线看文档啦!!!
  9. 【Java并发】Runnable、Callable、Future、FutureTask
  10. 针对宝塔面板一个站点多个域名使用SSL证书的解决方案
  11. PyQt5中QComboBox选中文本居中显示
  12. Ajax+GridView+Xml的简易留言薄
  13. Python 类的知识点
  14. NOIP2020微信步数
  15. 转贴--爱的最高境界
  16. 信息系统集成考试中pv,ev,ac相关概念及运算
  17. HTML、CSS 前端面试题收集
  18. sql查询 (连表查询)
  19. c语言中格式符号错误,C语言中符号格式说明
  20. 两服务器文件异地同步,两台群晖之间Moments异地同步方法探索

热门文章

  1. 中文 NLP(7) -- CTB语义组块说明
  2. 微信小程序个人和企业有什么不一样(个人和企业小程序的区别)
  3. 免费直播 | Three.js 实现粒子雷雨特效,走入前端 3D 世界!
  4. linux奶瓶U盘使用方法,如何用U盘启动盘奶瓶解除无线WPA加密
  5. AI“网红”科大讯飞的闹心半年报,员工竟成吃掉利润的背锅侠?
  6. tushare接口get_realtime_quotes报错:AssertionError: 33 columns passed, passed data had 34 columns
  7. 新加硬盘但计算机里找不着,win10新加的硬盘为什么不显示_win10新加的硬盘不显示恢复方法-win7之家...
  8. 时间戳转时间精确到毫秒
  9. 【问题】python open函数中的newline参数问题
  10. 阅读笔记:Single Shot Multibox Detector(SSD)