POJ 1463 Strategic game/洛谷UVA1292(树形dp)

P O J 1463 S t r a t e g i c g a m e \Huge{POJ\ 1463\ Strategic game} POJ 1463 Strategicgame

文章目录

  • 题意
  • 思路
  • 标程

题目地址1:1463 – Strategic game (poj.org)

题目地址2:Strategic game - 洛谷

题目地址3:P2016 战略游戏 - 洛谷

原题在poj上,洛谷上也有但是UVa上的,第三个是洛谷本站的,题目相同。

题意

给定一棵 n n n个节点的树。你需要让这棵树上的每条边都被看守。当一条边的端点上至少有一个士兵时,我们就说这条边被看守。求出看守这棵树最少用的士兵数量。

思路

跟据题意,对于每个节点,都分别有有士兵和没有两种状态。

对于任意节点x:

  • 如果这个节点没有士兵,那么其所有子节点必须全部有士兵。
  • 如果这个节点有士兵,那么其所有子节点有无士兵都行。

那么我们可以用二维数组 f [ i ] [ j ] , ( j = 0 o r 1 ) f[i][j],(j=0\ or\ 1) f[i][j],(j=0 or 1)来表示每个节点的状态。

初始时每个节点的状态都是: f [ i ] [ 0 ] = 0 , f [ i ] [ 1 ] = 1 f[i][0]=0,f[i][1]=1 f[i][0]=0,f[i][1]=1

那么状态转移方程为( j j j i i i的子节点):
{ f [ i ] [ 0 ] = ∑ f [ j ] [ 1 ] f [ i ] [ 1 ] = ∑ m i n ( f [ j ] [ 0 ] , f [ j ] [ 1 ] ) \left\{\begin{matrix} & f[i][0]=\sum{f[j][1]}\\ & f[i][1]=\sum{min(f[j][0],f[j][1])} \end{matrix}\right. {f[i][0]=f[j][1]f[i][1]=min(f[j][0],f[j][1])
最后我们用dfs递归到叶节点,然后向上返回并进行状态转移即可。

标程

const int N = 2000 + 10; int n, f[N][2];
vector<int> a[N];void init() {memset(f, 0, sizeof f);for(int i = 0; i < n; i ++ ) a[i].clear();
}void dfs(int x, int y) {f[x][0] = 0; f[x][1] = 1;if(a[x].empty()) return;for(auto i : a[x]) {if(i == y) continue;dfs(i, x);f[x][0] += f[i][1];f[x][1] += min(f[i][0], f[i][1]);}
}void Solved() {while(cin >> n) {//cin >> ninit();for(int i = 0; i < n; i ++ ) {int x, sum; scanf("%d:(%d)", &x, &sum);//cin >> x >> sum;while(sum -- ) {int y; cin >> y;a[x].push_back(y); a[y].push_back(x);}}dfs(0, 0);cout << min(f[0][0], f[0][1]) << endl;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/14344.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

创新力作 焕新首发丨捷顺科技·捷曜系列智慧停车新品全新上市

2024捷顺科技智慧停车全家族新品全面上市 全新外观、全新特性、全新体验 新控制机、新道闸、新超眸相机... 每款新品都有哪些功能亮点 带您一探究竟

解决vue3 vite打包报Root file specified for compilation问题

解决方法&#xff1a; 修改package.json打包命令 把 "build": "vue-tsc --noEmit && vite build" 修改为 "build": "vite build" 就可以了 另外关于allowJs这个问题&#xff0c;在tsconfig.json文件中配置"allowJs&qu…

C++入门:从C语言到C++的过渡(1)

目录 1.什么是C 2.C的标准库 3.命名空间 3.1为什么要存在命名空间 3.2命名空间的定义 3.3命名空间的使用 3.3.1域作用限定符 3.3.2using关键字引入某个成员 3.3.3using关键字引入命名空间名称 3.4命名空间的嵌套 3.5命名空间的合并 4.C中的输入与输出 1.什么是C C&am…

mysql binlog统一恢复误删数据库、表、数据(没有任何备份)

先将mysql文件夹中的my.ini进行设置 在 [mysqld]下边加上 # mysql-bin 是日志的基本名或前缀名&#xff0c;最后生成的日志文件是mysql-bin.000001类似&#xff0c;重启mysql数字会递增 log_binmysql-bin #binlog格式&#xff0c;statement&#xff0c;row&#xff0c;mixed可…

Reactor设计模式

Reactor设计模式 Reactor模式称为反应器模式或应答者模式&#xff0c;是基于事件驱动的设计模式&#xff0c;拥有一个或多个并发输入源&#xff0c;有一个服务处理器和多个请求处理器&#xff0c;服务处理器会同步的将输入的请求事件以多路复用的方式分发给相应的请求处理器。…

vue3第三十节(vue3 vite中使用sass)

引言&#xff1a;什么是Sass? Sass&#xff08;Syntactically Awesome Style Sheets&#xff09;是一种CSS预处理器&#xff0c;它扩展了CSS的功能&#xff0c;提供了更高级的语法和特性&#xff0c;例如变量、嵌套、混合、继承和颜色功能等&#xff0c;这些特性可以帮助开发…

TikTok越狱检测之一 <代码模块污染检测>

话说某天在国外论坛闲逛&#xff0c;有一国外小哥&#xff0c;发帖交流TikTok 的相关越狱检测&#xff0c;对TikTok的安全保护极其变态。 好奇心驱使之下&#xff0c;便下载TikTok&#xff0c;注册完账号&#xff0c;竟然什么都做不了&#xff0c;只能浏览视频。 基于逆向的本能…

ASO行业面临洗牌,苹果应用商店加搜索广告!

苹果公司全球市场营销高级副总裁菲尔席勒(Phil Schiller),在全球开发者大会开幕前(WWDC)透露了一些应用商店方面的消息。重点包括:1.应用商店搜索中加入广告;2.应用审核加快;3.新的商业模式。 一、 Search Ads搜索广告 这是最令人惊讶的改变,苹果在App Store平台的搜索结果中加…

前端自动将 HTTP 请求升级为 HTTPS 请求

前端将HTTP请求升级为HTTPS请求有两种方式&#xff1a; 一、index.html 中插入meta 直接在首页 index.html 的 head 中加入一条 meta 即可&#xff0c;如下所示&#xff1a; <meta http-equiv"Content-Security-Policy" content"upgrade-insecure-requests&…

广东旅游景点推荐

增城区 增城作为广州市的一个区&#xff0c;拥有丰富的自然景观和人文历史景点&#xff0c;非常适合自驾游。以下是一些推荐的自驾游景点&#xff1a; 白水寨风景区&#xff1a;拥有原始森林、悬崖瀑布和浅滩湿地&#xff0c;是广东罕见的自然生态资源集中地&#xff0c;也是广…

树洞陪聊系统源码/陪聊/陪玩/树洞/陪陪/公众号开发/源码交付/树洞系统源码

独立版本源码交付&#xff0c;自研UI和前后端代码 平台自带店员&#xff0c;无需自主招募&#xff0c;搭建直接运营 支持三方登录&#xff0c;官方支付、虎皮椒、易支付/码支付 支持首单体验、盲盒订单、指定下单等多个模式 支持钱包预充值、店员收藏、订单评价等功能 支持…

AI日报:讯飞星火Lite API永久免费;李开复称大模型疯狂降价是双输;AI特效末日滤镜抖音爆火;AI音乐Suno 融资1.25亿美元

欢迎来到【AI日报】栏目!这里是你每天探索人工智能世界的指南&#xff0c;每天我们为你呈现AI领域的热点内容&#xff0c;聚焦开发者&#xff0c;助你洞悉技术趋势、了解创新AI产品应用。 新鲜AI产品点击了解&#xff1a;AIbase - 智能匹配最适合您的AI产品和网站 1、科大讯飞…

can设备调试 - linux driver

这篇文章主要介绍can设备的调试相关信息&#xff0c;不具体介绍驱动的实现。 如果驱动写完&#xff0c;对can设备进行验证&#xff0c;可能会出现很多不可预见的问题。下面说说验证步骤 验证can设备可以使用工具can-utils。这个工具包中会有cansend candump等程序。可以直接通…

系统架构师考试(十)

SaaS为在线客服 PaaS为二次开发&#xff0c;比如低代码平台 IaaS 硬件开发 B 是基础设施作为服务 软件架构的概念 架构风格 数据流风格 网络报文是在计算机网络中通过网络传输的数据单元&#xff0c;它是网络通信的基本单位。网络报文包含了发送方和接收方之间传输的数据&…

『网络攻防和AI安全之家』星球正式运营及CSDN安全知识汇总,欢迎广大博友加入

“今天是Eastmount的安全星球 —— 『网络攻防和AI安全之家』正式创建和运营的日子&#xff0c;该星球目前主营业务为 安全零基础答疑、安全技术分享、AI安全技术分享、AI安全论文交流、威胁情报每日推送、网络攻防技术总结、系统安全技术实战、面试求职、安全考研考博、简历修…

计算机操作系统核心组件

我是荔园微风&#xff0c;作为一名在IT界整整25年的老兵&#xff0c;今天给大家讲讲操作系统。 操作系统核心组件 用户借助于一个或多个应用程序与操作系统进行交互&#xff0c;常常是通过一个称为shell的特殊应用程序进行的&#xff0c;shell也叫作命令解释器。105今天的大多…

Postgresql源码(130)ExecInterpExpr转换为IR的流程

相关 《Postgresql源码&#xff08;127&#xff09;投影ExecProject的表达式执行分析》 《Postgresql源码&#xff08;128&#xff09;深入分析JIT中的函数内联llvm_inline》 《Postgresql源码&#xff08;129&#xff09;JIT函数中如何使用PG的类型llvmjit_types》 表达式计算…

VBA创建文本文件

Sub 创建文本文件()Dim fso As New Scripting.FileSystemObjectDim ostream As Scripting.TextStreamDim sfname As StringDim str1 As Stringsfname Application.InputBox(prompt:"请输入文本文件的名称", _Title:"输入文件名称", Type:2)If sfname &…

Java设计模式 _行为型模式_迭代器模式

一、迭代器模式 1、迭代器模式 迭代器模式&#xff08;Iterator Pattern&#xff09;是一种行为型设计模式&#xff0c;用于顺序访问集合对象的元素&#xff0c;不需要关心集合对象的底层表示。如&#xff1a;java中的Iterator接口就是这个工作原理。 2、实现思路 &#xff0…