QOJ2376 Game on a Tree (树形 dp)

news/2024/7/4 18:09:13/文章来源:https://www.cnblogs.com/FireRaku/p/18279721

QOJ2376 Game on a Tree

树形 dp

因为题目限制对于两个人等价,所以朴素的,考虑\(u\) 与祖先和后代连边,构成一个新的无向图。那么题目就变成:在无向图中选一点,每一次操作就是走一步到新的点,谁先不能走,那么另一个人获胜。

先说结论:当无向图有完美匹配时,后手胜,反之先手胜

证明:若有完美匹配,说明所有点都在匹配中,先手选点后,后手选与之匹配的点,那么一定能选完所有点并且后手选到最后一个,后手胜;反之,说明存在一个点不在最大匹配中,先手选该点,那么后手选择相邻的点一定在匹配中(否则这两点又构成匹配),先手下一次选的点同样在匹配中(否则构成增广路,与最大匹配矛盾),那么就回到上面的情形但角色互换,先手胜。

回到原题,我们无法建出无向图,考虑树形 dp。设 \(f_u\) 表示 \(u\) 子树中最少有多少点没有匹配,设 \(g_u=\sum\limits_{v\in son_u}f_v\),根据 \(u\) 点和子树中任意一点能够形成匹配,转移为:

\[f_u=\begin{cases} g_u-1, & \text{if }g>0 \\ 1, & \text{otherwise} \end{cases} \]

答案判断 \(f_1\) 即可。

复杂度 \(O(n)\)

#include <bits/stdc++.h>
#define pii std::pair<int, int>
#define fi first
#define se second
#define pb push_backusing i64 = long long;
using ull = unsigned long long;
const i64 iinf = 0x3f3f3f3f, linf = 0x3f3f3f3f3f3f3f3f;
const int N = 1e5 + 10;
int n;
int f[N];
std::vector<int> e[N];
int main() {std::ios::sync_with_stdio(false);std::cin.tie(nullptr);std::cin >> n;for(int i = 1; i < n; i++) {int u, v;std::cin >> u >> v;e[u].pb(v);e[v].pb(u);}auto dfs = [&](int u, int fa, auto &self) -> void {int g = 0;for(auto v : e[u]) {if(v == fa) continue;self(v, u, self);g += f[v];}if(g) f[u] = g - 1;else f[u] = 1;};dfs(1, 0, dfs);std::cout << (f[1] ? "Alice\n" : "Bob\n");return 0;
}

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

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

相关文章

面试官:你了解git cherry-pick吗?

复盘一次不规范开发引发的线上问题事情要从一次不规范的代码开发开始说起 背景故事时间2024年某个风平浪静的周五晚上地点中国,北京,西二旗,某互联网大厂会议室人物小杰,小A,小B,老K对话老K:昨天提交的代码被测试打回来了!为什么小B没开发完的内容也一起提交上去了? 小…

Swin Transformer:最佳论文,准确率和性能双佳的视觉Transformer | ICCV 2021

论文提出了经典的Vision Transormer模型Swin Transformer,能够构建层级特征提高任务准确率,而且其计算复杂度经过各种加速设计,能够与输入图片大小成线性关系。从实验结果来看,Swin Transormer在各视觉任务上都有很不错的准确率,而且性能也很高来源:晓飞的算法工程笔记 公…

ros -slam - microros- PID控制器实现

上一节我们通过编码器完成了对机器人单个轮子的速度测量,完成了电机速度闭环控制的重要一步-反馈。 有了反馈,接着我们需要设计一个控制器来帮助我们实现这个需求,这个控制器的输入是当前的速度和目标速度,输出是应该给到电机的PWM占空比。 一、PID控制器介绍PID控制器是一…

vmdk to vhdx 虚拟磁盘格式转换qemu-img

qemu-img是创建、转换、修改磁盘映像的工具,我们可以用它非常方便的转换虚拟磁盘格式,比如在vmdk、vhdx、qcow2、vdi之间相互转换,它在流行的Linux、macOS、Windows平台上都发布有对应的版本。 本文介绍的是Windows版本,它支持下图中所示的格式。转换格式需要使用它的conve…

NAML论文阅读笔记

Neural News Recommendation with Attentive Multi-View Learning论文阅读笔记 这篇也是比较老但是比较经典的文章,来读一下 Abstract ​ 现有的新闻推荐方法通常基于单一的新闻信息(如标题)来学习这些表征,这可能是不够的。在本文中,我们提出了一种神经新闻推荐方法,它…

ros2 - slam - 使用编码器测量轮子最大速度

新建example26_max_speed_measurement 添加依赖[env:featheresp32] ; 这是一个环境配置标签,指定了代码将运行的硬件平台和框架 platform = espressif32 ; 指定了使用的平台为Espressif 32 board = featheresp32 ; 指定使用的硬件板为Feather ESP32 framework = arduino ;…

入门Salesforce:必须掌握的20+基础专业术语!

Salesforce的发展令人印象深刻。在过去的20年中,Salesforce创建了一个由管理员、开发人员、顾问和用户组成的生态系统,不断颠覆创新CRM,促进平等和多样性。 作为初学者,探索Salesforce领域就像学习一门新语言。Salesforce中有着大量术语,从潜在客户、自定义对象到仪表板、…

ros2 - slam - 直流电机-编码器脉冲测量与校准

这一节我们编写代码来尝试下是否能够读取到电机上编码器的脉冲数,并通过实验测试出小车的输出轴转速和编码器脉冲的比值。 一、新建工程并导入开源库新建example25_encoder添加依赖[env:featheresp32] ; 这是一个环境配置标签,指定了代码将运行的硬件平台和框架 platform = …

在开发环境中使用 RawCap 和 Wireshark 排查本地回路地址

如何使用 RawCap 和 Wireshark 排查本地网络请求中的404错误 开发微服务应用时,正确配置网络请求的转发至关重要。本文将通过一个具体示例来展示如何使用 RawCap 和 Wireshark 来监控和分析本地回路请求,并排查导致 HTTP 404 错误的可能原因。 背景 在本例中,用户的浏览器请…

AI冲击创意岗位,OpenAI技术官语出惊人:一些岗位或许本不该存在哈哈,这些段子有意思,太幽默了,篇篇精彩

现在老美在人工智能领域对我们卡脖子了,但人工智能就像一把达摩克利斯之剑,正威胁着越来越多的创意工作岗位。 OpenAI 的首席技术官米拉・穆拉蒂 (Mira Murati) 上个月在达特茅斯大学 Thayer 工程学院的采访中表示:“一些创意岗位可能会消失。但也许它们本来就不应该存在 —…

性能测试:主流压测工具介绍

简介 性能压测工具是用于模拟大量用户访问、负载和压力条件的软件工具,以评估系统、应用程序或服务在高负载条件下的性能表现和稳定性。 这些工具通常用于软件开发、测试、部署前的准备以及生产环境中的性能监测和优化。性能压测工具的主要功能包括模拟用户行为、生成大量的请…

springboot实现异步调用demo

异步操作的简单实现springboot实现异步调用 异步调用特点 异步调用在开发程序中被广泛应用,在异步任务中,主线程不需要阻塞等待异步任务的完成,而是可以继续处理其他请求。 异步调用的特点如下:非阻塞:主线程在调用异步方法后不会等待其完成,而是立即返回。 后台处理:耗…

智慧工地AI行为监控系统

智慧工地AI行为监控系统主要体现在在工地原有的监控系统上面利用智慧工地AI行为监控系统,对分布在工地各处的监控画面传回的视频流进行实时检测。AI行为监控系统可以保障工地施工人员安全,确保工人施工过程及行为符合工地要求规范。这样既保障了工地人员的安全,也同时保证施…

视频监控智能分析技术

视频监控智能分析技术又叫智能视频分析技术,该技术诞生于机器视觉及边缘计算。视频监控智能分析技术是当下在人们生活中应用范围很广的技术之一。智能视频分析技术能够现场监控传回的视频流中抓取图片及人体状态动作信息,建立图片与规则建立映射关系。SuiJi视频监控智能分析技…

TypeScript中,如何利用数组生成一个联合类型

本文由 ChatMoney团队出品 在开发中我们常常会遇到这样一个问题,代码如下: const arr = ["a","b","c","d","e","f","g","h","i","j","k","l",&qu…

图神经网络版本的Kolmogorov Arnold(KAN)代码实现和效果对比

Kolmogorov Arnold Networks (KAN)最近作为MLP的替代而流行起来,KANs使用Kolmogorov-Arnold表示定理的属性,该定理允许神经网络的激活函数在边缘上执行,这使得激活函数“可学习”并改进它们。 目前我们看到有很多使用KAN替代MLP的实验,但是目前来说对于图神经网络来说还没有…

修改yum安装的php的启动用户

在使用yum安装php时,默认情况下,安装完成后php的启动用户是apache 1、编辑php-fpm的配置文件。在大多数Linux系统中,php-fpm的配置文件路径为/etc/php-fpm.d/www.conf。 2、找到配置文件中的`user`和`group`项。默认情况下,`user`的值是apache,`group`的值是apache,即php…

Vue预渲染prerender-spa-plugin+vue-meta-info

前言: 公司现有一个新需求需要在原有的vue2项目上面进行预渲染,进行SEO的优化,在网上进行了一系列的搜索,发现两种简单易上手的方案(1.使用prerender-spa-plugin+vue-meta-info进行打包构建;2.使用nuxt.js在开发过程中就渲染呈现出来) 因是在原有项目基础上进行,所以采…

禅道的使用:如何搭建Ubuntu环境安装禅道

一、禅道安装部署的环境要求 1.禅道安装部署环境推荐使用 Linux + Apache + PHP7.0以上版本+ MySQL5.5以上版本/MariaDB的组合。Nginx其次,不推荐IIS + PHP组合。 2.禅道需要使用PHP的这些扩展:pdo、pdo_mysql、json、filte、openssl、mbstring、zlib、curl、gd、iconv,企业…