【洛谷_P2016】战略游戏

DP或贪心(算法设计与分析) 小游戏 阿良很喜欢玩计算机游戏,特别是战略游戏,但是有时他不能尽快找到解所以常常感到很沮丧。现在面临如下问题:他必须在一个中世纪的城堡里设防,城堡里的道路形成一棵无向树。要在结点上安排最少的士兵使得他们可以看到所有边。你能帮助他吗? 你的任务是给出士兵的最少数目。 输入包含多组数据。每组数据表示一棵树,在每组数据中: 第一行是结点的数目。 接下来的几行,每行按如下格式描述一个结点: 结点标识符 : ( 道路的数目 ) 结点标识符1 结点标识符2 ...... 结点标识符道路的数目 或者 结点标识符 : (0) 对于 n (0<n<=1500) 个结点,结点标识符是一个从 0 到 n - 1 的整数。每条边在测试用例中只出现一次。 对于每组数据,各给出一个整数表示士兵的最少数目. 测试输入关于“测试输入”的帮助 期待的输出关于“期待的输出”的帮助 时间限制关于“时间限制”的帮助 内存限制关于“内存限制”的帮助 额外进程关于“{$a} 个额外进程”的帮助 测试用例 1 以文本方式显示 4↵ 0:(1) 1↵ 1:(2) 2 3↵ 2:(0)↵ 3:(0)↵ 5↵ 3:(3) 1 4 2↵ 1:(1) 0↵ 2:(0)↵ 0:(0)↵ 4:(0)↵ 以文本方式显示 1↵ 2↵ 立即下载

战略游戏


Description

Bob喜欢玩电脑游戏,特别是战略游戏。但是他经常无法找到快速玩过游戏的办法。现在他有个问题。他要建立一个古城堡,城堡中的路形成一棵树。他要在这棵树的结点上放置最少数目的士兵,使得这些士兵能了望到所有的路。注意,某个士兵在一个结点上时,与该结点相连的所有边将都可以被了望到。
  请你编一程序,给定一树,帮Bob计算出他需要放置最少的士兵。

Input

输入文件中数据表示一棵树,描述如下:
  第一行 N,表示树中结点的数目。
  第二行至第N+1行,每行描述每个结点信息,依次为:该结点标号i,k(后面有k条边与结点I相连),接下来k个数,分别是每条边的另一个结点标号r1,r2,…,rk。
  对于一个n(0 < n <= 1500)个结点的树,结点标号在0到n-1之间,在输入文件中每条边只出现一次。

Output

输出文件仅包含一个数,为所求的最少的士兵数目。
例如,对于如右图所示的树:
答案为1(只要一个士兵在结点1上)。

Sample Input

样例1

4
0 1 1
1 2 2 3
2 0
3 0

样例1图在这里插入图片描述

样例2

5
3 3 1 4 2
1 1 0
2 0
0 0
4 0

Sample Output

样例1

1

样例2

2

解题思路

挺简单的一道树形DP,我们用F[i][1]表示当前点放人的情况,用F[i][0]表示当前点不放人的情况,动态转移方程如下:
f[now][0]+=f[a[now][i]][1];f[now][0]+=f[a[now][i]][1];f[now][0]+=f[a[now][i]][1];
f[now][1]+=min(f[a[now][i]][1],f[a[now][i]][0]);f[now][1]+=min(f[a[now][i]][1],f[a[now][i]][0]);f[now][1]+=min(f[a[now][i]][1],f[a[now][i]][0]);
程序如下:

#include<iostream>
#include<cstdio>
using namespace std;

int n,a[1510][1510],hd[151000];
int b[151000],f[151000][2];

void dp(int now)
{
	b[now]=1;
	f[now][1]=1;
	for(int i=1;i<=hd[now];i++)
	{
		if(b[a[now][i]])
			continue; 
		dp(a[now][i]);
		f[now][0]+=f[a[now][i]][1];
		f[now][1]+=min(f[a[now][i]][1],f[a[now][i]][0]);
	}
}

int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		int x,k;
		scanf("%d%d",&x,&k);
		for(int j=1;j<=k;j++)
		{
			int t;
			scanf("%d",&t);
			a[x][++hd[x]]=t;
			a[t][++hd[t]]=x;
		}
	}
	dp(0);
	cout<<min(f[0][1],f[0][0])<<endl;
}

Windows 64 位系统下安装配置 DOSBox 及 debug.exe 该篇博客同样作为类似问题 “如何在 Windows 64 位系统下进入 debug” 的答案。 很多同学初看王爽的《汇编语言》,或者因为其它原因需要进入 debug 调试模式下学习汇编语言的时候,会发现进入不了,出现类似以下的错误提示。 这是因为他们使用的是 64 位的 Windows 系统(Win 7,Win 8 以及 Win 10 等),而 64 位 Windows 系统不再支持在命令提示符窗口下进入 debug 调试模式。那么对于使用 64 位 Windows 系统的用户来说,该怎样才能够顺利进入 d 阅读详情

相关推荐

黑金ZYNQ7010开发板开箱实测:从接线到串口通信的保姆级指南

本文提供黑金ZYNQ7010开发板从开箱到串口通信的完整实操指南。详细介绍了硬件连接、驱动安装、启动模式设置及串口终端配置等关键步骤,并针对常见问题提供排查思路,帮助FPGA开发者快速上手ZYNQ平台,建立稳定的调试通道。

weixin_29266749的博客 466

动态规划·树形DP·题解【战略游戏】

文章目录题目题目描述输入格式输出格式样例题意思路代码 题目 WOJ#2532 战略游戏 洛谷P2016 战略游戏 这道题主要是看边的情况。 题目描述 Bob喜欢玩电脑游戏,特别是战略游戏。但是他经常无法找到快速玩过游戏的办法。现在他有个问题。 他要建立一个古城堡,城堡中的路形成一棵树。他要在这棵树的结点上放置最少数目的士兵,使得这些士兵能瞭望到所有的路。 注意:某个士兵在一个结点上时,与该结点相连...

Chenyu_oi的博客 1043

LLC同步整流实战:从驱动时序到调试仿真,效率提升与避坑指南

同步整流技术是提升开关电源效率的关键手段,尤其在LLC谐振变换器中,通过低导通电阻MOSFET替代二极管可显著降低副边整流损耗。然而,驱动时序、电流过零检测及轻载模式切换是工程实践中的核心难点。从Vds检测原理到死区调节,再到仿真与实测验证,工程师需掌握完整的调试方法论。该技术广泛应用于通信电源、服务器电源及车载DC/DC,合理设计LLC同步整流方案能实现满载效率提升约1.8个百分点,同时优化热分布。本文以600W半桥LLC样机为线索,深入分析工作模态、驱动芯片选型、波形判断与仿真模型搭建,为电源设计提供可

weixin_29165465的博客 297

洛谷B2016浮点数向零舍入

但是需要注意的是转换的时候还是要定义long,如果Int的话某些测试样例无法通过,可能出现溢出问题。输入一个双精度浮点数,将其向零舍入到整数。说明:向零舍入的含义是,正数向下舍入,负数向上舍入。浮点数赋值给整型变量的时候,舍弃小数部分。一个整数,即向零舍入到整数的结果。还要注意转换的时候数值溢出问题。一个双精度浮点数x。

qq_44400759的博客 1390

GR00TN1.7国内本地下载+模型下在+hugingface无法连接,本地模型下载

GR00TN1.7

alsj123456的博客 97

别再手动巡检了!用Zabbix 5.0 + SNMPv2自动监控华为S系列交换机(附完整命令集)

本文详细介绍了如何利用Zabbix 5.0与SNMPv2实现华为S系列交换机的自动化监控,告别低效的手动巡检。通过配置SNMPv2c安全基线、核心功能启用及Zabbix Server端深度配置,构建7×24小时监控体系,实时预警接口状态、流量波动等关键指标,大幅提升运维效率与故障响应速度。

weixin_30940783的博客 629

【例 4】战略游戏 (树形dp)

第二到第 N+1 行,每行描述每个节点信息,依次为该节点编号 i,数值 k,k 表示后面有 k 条边与节点 i 相连,接下来 k 个数,分别是每条边的所连节点编号 r1,r2,⋯,rk。他要在这棵树的节点上放置最少数目的士兵,使得这些士兵能够瞭望到所有的路。对于一个有 N 个节点的树,节点标号在 0 到 N−1 之间,且在输入文件中每条边仅出现一次。请你编一个程序,给定一棵树,帮 Bob 计算出他最少要放置的士兵数。注意:某个士兵在一个节点上时,与该节点相连的所有边都将能被瞭望到。

2301_76709357的博客 795

从零开始:如何在Windows上搭建Airsim仿真环境(避坑指南)

本文是一份详细的Windows平台AirSim仿真环境搭建指南。文章从硬件要求、Visual Studio与虚幻引擎安装开始,逐步讲解AirSim插件编译、UE项目配置,并重点介绍了通过WSL2连接PX4飞控软件实现软件在环仿真的完整流程。内容涵盖常见问题排查与性能优化,旨在帮助开发者避开常见陷阱,高效构建可用于无人机算法开发的虚拟测试平台。

earth的博客 302

洛谷 B2016 浮点数向零舍入 题解

输入一个单精度浮点数,将其向零舍入到整数。说明:向零舍入的含义是,正数向下舍入,负数向上舍入。

嵌入式开发工程师 678

工业视觉光源频闪控制的三种核心模式与选型实战

本文深入解析工业视觉系统中光源频闪控制的三种核心模式:光源主控、相机主控与硬同步。针对高速飞拍、缺陷检测等场景,详细对比了各模式的时序原理、硬件要求与适用场景,并提供了基于产线速度与检测需求的实战选型指南,帮助工程师有效消除运动模糊、提升成像质量与系统稳定性。

weixin_29299807的博客 438

Coze智能体网页集成实战:从零搭建免登录AI助手

本文详细介绍了如何利用Coze Chat SDK从零开始为网站集成免登录AI助手。通过获取访问令牌和智能体ID,仅需几行JavaScript代码即可将功能完整的对话窗口嵌入网页,实现开箱即用的智能交互。文章重点讲解了核心部署步骤、会话隔离方案以及UI深度定制方法,帮助开发者快速打造贴合品牌、提升用户体验的网页AI助手。

gold8的专栏 558

战略游戏 题解

战略游戏 题解 战略游戏 题目 BobBobBob喜欢玩电脑游戏,特别是战略游戏。但是他经常无法找到快速玩过游戏的办法。现在他有个问题。他要建立一个古城堡,城堡中的路形成一棵树。他要在这棵树的结点上放置最少数目的士兵,使得这些士兵能了望到所有的路。注意,某个士兵在一个结点上时,与该结点相连的所有边将都可以被了望到。 请你编一程序,给定一树,帮BobBobBob计算出他需要放置最少的士兵。 输入 输入文件中数据表示一棵树,描述如下:   第一行 NNN,表示树中结点的数目。   第二行至第NNN+1行,每

Y的博客 638

【RT-DETR涨点改进】独家Conv改进篇 | 来自TIP 2024顶刊| 引入 DEConv细节增强卷积模块, 能够恢复更多细节信息,提升小目标检测精度、含多种不同模型改进点

本文提出了一种细节增强卷积(DEConv)模块,通过融合多种差异卷积(CDC、ADC、HDC、VDC)来增强图像特征表示能力,特别在边缘和纹理细节提取方面表现突出。该模块采用重参数化技术,在不增加计算成本的情况下,将先验信息融入常规卷积层,显著提升了RT-DETR模型在模糊或遮挡场景下的目标检测精度。实验验证了DEConv在多种骨干网络(ResNet18/50、HGNet等)中的有效性,为实时目标检测系统提供了轻量高效的改进方案。

Ai缝合怪、助力小伙伴高效发论文 452

洛谷 P2016 战略游戏

洛谷 P2016 战略游戏 Description Bob喜欢玩电脑游戏,特别是战略游戏。但是他经常无法找到快速玩过游戏的办法。现在他有个问题。 他要建立一个古城堡,城堡中的路形成一棵树。他要在这棵树的结点上放置最少数目的士兵,使得这些士兵能了望到所有的路。 注意,某个士兵在一个结点上时,与该结点相连的所有边将都可以被了望到。 请你编一程序,给定一树,帮Bob计算出他需要放置最少的士兵...

weixin_30614109的博客 345

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

洛谷P2016战略游戏 题解

题目链接 分析: 树形DP 令fu,0f_{u,0}fu,0​表示点uuu不放士兵时uuu的子树(包括uuu)最少需要多少个士兵,fu,1f_{u,1}fu,1​表示点uuu放士兵时uuu的子树最少需要多少个士兵。 因为需要每条边的端点都有人,所以若点uuu不放,则uuu的每一个儿子都要放,否则uuu与儿子的连边的两端将都没有士兵,不符合题意。令sonuson_usonu​表示uuu的儿子的集合,...

一只蒟蒻的博客 386

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

洛谷P2016[SEERC 2000]战略游戏题解

我们用dp[u][0]表示u点不放士兵,子树覆盖所有边的最少士兵数;通过深度优先搜索遍历树,u不放则子节点必须放,u放则子节点可选放或不放取最小。最后取根节点两种情况的最小值,就是答案,代码里dfs递归处理父子节点,避免重复遍历即可。他要在这棵树的结点上放置最少数目的士兵,使得这些士兵能瞭望到所有的路。注意,某个士兵在一个结点上时,与该结点相连的所有边将都可以被瞭望到。请你编一程序,给定一树,帮 Bob 计算出他需要放置最少的士兵。输出文件仅包含一个整数,为所求的最少的士兵数目。,表示树中结点的数目。

aierxiang的博客 623

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

洛谷 P2016 战略游戏 题解

题目:P2016 战略游戏 DP - 树形DP 题目大意 给出一棵树,如果在一个点 xxx 放了一个士兵,该士兵将会覆盖所有与点 xxx 直接相邻的边。求最少放多少个士兵,使得所有边都被覆盖 解题思路 这题其实跟P1352 没有上司的舞会非常相似,只不过改成了覆盖边 设 f[x][0]f[x][0]f[x][0] 表示以 xxx 为根的子树中,点 xxx 不放士兵所需要的最小士兵数量 f[x][1...

Brian_Pan_的博客 520

洛谷P2016 战略游戏

题目描述 Bob喜欢玩电脑游戏,特别是战略游戏。但是他经常无法找到快速玩过游戏的办法。现在他有个问题。 他要建立一个古城堡,城堡中的路形成一棵树。他要在这棵树的结点上放置最少数目的士兵,使得这些士兵能了望到所有的路。 注意,某个士兵在一个结点上时,与该结点相连的所有边将都可以被了望到。 请你编一程序,给定一树,帮Bob计算出他需要放置最少的士兵. 输入输出格式 输入格式: 第一行 N...

anonymity 519

【SSL】1230&【洛谷】P2016战略游戏

【SSL】1230&【洛谷】P2016战略游戏 Time Limit:1000MS Memory Limit:65536K Description Bob喜欢玩电脑游戏,特别是战略游戏。但是他经常无法找到快速玩过游戏的办法。现在他有个问题。他要建立一个古城堡,城堡中的路形成一棵树。他要在这棵树的结点上放置最少数目的士兵,使得这些士兵能了望到所有的路。注意,某个士兵在一个结点上时,与该结点相连的所有边将都可以被了望到。   请你编一程序,给定一树,帮Bob计算出他需要放置最少的士兵。 Input 输入

weixin_46975572的博客 216

【洛谷 P2016&SSL 1230】战略游戏【树形DP】

战略游戏(difficult) Time Limit:1000MS Memory Limit:65536K Description Bob喜欢玩电脑游戏,特别是战略游戏。但是他经常无法找到快速玩过游戏的办法。现在他有个问题。他要建立一个古城堡,城堡中的路形成一棵树。他要在这棵树的结点上放置最少数目的士兵,使得这些士兵能了望到所有的路。注意,某个士兵在一个结点上时,与该结点相连的所有边将都可以被了望到。   请你编一程序,给定一树,帮Bob计算出他需要放置最少的士兵。 Input 输入文件中数据表示一棵树,

绫 408

洛谷P2016 战略游戏【树形dp】

P2016 战略游戏 时间限制 1.00s 内存限制 125.00MB 题目描述 Bob喜欢玩电脑游戏,特别是战略游戏。但是他经常无法找到快速玩过游戏的办法。现在他有个问题。 他要建立一个古城堡,城堡中的路形成一棵树。他要在这棵树的结点上放置最少数目的士兵,使得这些士兵能了望到所有的路。 注意,某个士兵在一个结点上时,与该结点相连的所有边将都可以被了望到。 请你编一程序,给定一树,帮Bob计算出...

C++的星空 422

洛谷P2016 战略游戏 - 树形DP

dp1[i] : 第i个节点站士兵,照亮以i为节点的子树所需最少的士兵数; dp0[i] : 第i个节点不站士兵,照亮以i为节点的子树所需最少的士兵数;

weixin_50836068的博客 4828

洛谷P2016 [SEERC 2000] 战略游戏题解

用树形 DP 枚举每个点选或不选,不选则子节点全选,选则子节点取最小,最后算出覆盖整棵树所有边的最少节点数。

suyefwhw的博客 36
上一篇: 【POJ_2342】Anniversary party
下一篇: 【SSL_1565】将功补过
SSL_GYX
博客等级 码龄7年 103粉丝 297原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值