当前位置: 首页 > news >正文

1. 小游戏(贪心)

   题干:

        谷同学很喜欢玩计算机游戏,特别是战略游戏,但是有时他不能尽快找到解所以常常感到很沮丧。现在面临如下问题:他必须在一个中世纪的城堡里设防,城堡里的道路形成一棵无向树。要在结点上安排最少的士兵使得他们可以看到所有边。你能帮助他吗?

        你的任务是给出士兵的最少数目。

        输入:包含多组数据。每组数据表示一棵树,在每组数据中:

        第一行是结点的数目。

        接下来的几行,每行按如下格式描述一个结点:结点标识符 : ( 道路的数目 ) 结点标识符1  结点标识符2  ......  结点标识符道路的数目

        或者

        结点标识符 : (0)

        对于 n (0<n<=1500) 个结点,结点标识符是一个从 0 到 n - 1 的整数。每条边在测试用例中只出现一次。

        对于每组数据,各给出一个整数表示士兵的最少数目。

测试输入期待的输出时间限制内存限制额外进程
测试用例 1以文本方式显示
  1. 4↵
  2. 0:(1) 1↵
  3. 1:(2) 2 3↵
  4. 2:(0)↵
  5. 3:(0)↵
  6. 5↵
  7. 3:(3) 1 4 2↵
  8. 1:(1) 0↵
  9. 2:(0)↵
  10. 0:(0)↵
  11. 4:(0)↵
以文本方式显示
  1. 1↵
  2. 2↵
1秒64M0

 

代码如下:

        这里和小学期的知识对应起来了。(动态规划dp[n][2]的设计)

#include <iostream>
#include <cstring>
using namespace std;const int MAXN = 1505;
int dp[MAXN][2], visited[MAXN], link[MAXN][MAXN];
void DFS(int root)
{visited[root] = 1;for (int i = 0; link[root][i] != -1; ++i){int m = link[root][i];if (!visited[m]){DFS(m);dp[root][1] += dp[m][0];dp[root][0] += min(dp[m][0], dp[m][1]);}}dp[root][0]++;
}
int main()
{int n;while (scanf("%d", &n) != EOF){memset(dp, 0, sizeof(dp));memset(visited, 0, sizeof(visited));memset(link, 0, sizeof(link));int node, next, temp, root;for (int i = 0; i < n; i++){scanf("%d:(%d)", &node, &next);root = (!i) ? node : root;int j = 0;for (; j < next; ++j){cin >> temp;link[node][j] = temp;}link[node][j] = -1;}DFS(root);cout << min(dp[root][0], dp[root][1]) << endl;}return 0;
}

http://www.lryc.cn/news/252876.html

相关文章:

  • 记录 | c++打印变量类型
  • nodejs_vue+vscode美容理发店会员管理系统un1dm
  • C语言 操作符详解
  • 成为AI产品经理——回归模型评估(MSE、RMSE、MAE、R方)
  • 【C++11(一)】右值引用以及列表初始化
  • 通俗理解Jenkins是什么?
  • 格雷希尔帮助仪器仪表测试时快速密封的G60C系列接头其优势有哪些
  • 系统运维工具KSysAK——让运维回归简单
  • NowCoder | KY11 二叉树遍历
  • android.view.WindowLeaked解决方法
  • 浪潮信息KeyarchOS的飞跃之路
  • C++基础 -41- 迭代器
  • zookeeper心跳检测 (实操课程)
  • 社区新零售:重塑零售业的全新模式
  • 北京华联BHGMall“宠粉模式”不断迭代,强体验注互动成行业UP主
  • 前端时间的失败总结复盘
  • Ribbon 负载均衡
  • 微服务实战系列之Cache(技巧篇)
  • 6.17验证二叉树(LC98-M)
  • 【Linux】编译器-gcc/g++与调试器-gdb的使用
  • Google Guava 散列工具使用详解
  • AIGC-文生视频
  • java中Collectors.groupingBy返回实例?
  • uniapp打包的h5项目多了接口调用https://api.next.bspapp.com/client
  • 探索跨境建站:如何借助软骨鱼SaaS平台快速搭建独立站
  • C语言-字符串输入输出
  • OpenHarmony 设备启动Logo和启动视频替换指南
  • Python中函数添加超时时间,Python中signal使用
  • 【C语言】递归详解
  • NSSCTF 文件上传漏洞题目