AT_abc398_e [ABC398E] Tree Game 题解
题目传送门
题目大意
题目描述
本题是一道交互题(你的程序需要通过输入输出与评测系统进行交互)。
给定一棵包含 N N N 个顶点的树 G G G,顶点编号为 1 1 1 至 N N N。第 i i i 条边连接顶点 U i U_i Ui 和 V i V_i Vi。
你和高桥君将使用这棵树 G G G 进行游戏。首先,你选择先手或后手。之后,双方轮流进行以下操作(先手先行动):
- 选择一个满足 1 ≤ i < j ≤ N 1 \leq i < j \leq N 1≤i<j≤N 的整数对 ( i , j ) (i, j) (i,j),并满足以下两个条件:
- G G G 中当前不存在连接顶点 i i i 和顶点 j j j 的边。
- 在 G G G 中添加连接顶点 i i i 和顶点 j j j 的边后,不会形成奇环。
- 将该边添加到 G G G 中。
无法进行操作的一方判负,另一方获胜。请通过实际与高桥君对弈取得胜利。
奇环的定义:顶点序列 ( v 0 , v 1 , … , v k ) (v_0, v_1, \ldots, v_k) (v0,v1,…,vk) 满足以下所有条件时,称为 G G G 的一个奇环:
- k k k 为奇数。
- v 0 = v k v_0 = v_k v0=vk。
- 对所有 1 ≤ i ≤ k 1 \leq i \leq k 1≤i≤k,存在连接 v i − 1 v_{i-1} vi−1 和 v i v_i vi 的边。
交互方式
本题是一道交互题,你的程序需通过标准输入输出与评测系统交互。
首先,通过标准输入接收 N N N 及 G G G 的信息,格式如下:
N N N
U 1 U_1 U1 V 1 V_1 V1
U 2 U_2 U2 V 2 V_2 V2
⋮ \vdots ⋮
U N − 1 U_{N-1} UN−1 V N − 1 V_{N-1} VN−1
接着,你需决定选择先手或后手。若选择先手,通过标准输出输出 First;若选择后手,输出 Second。
此后游戏开始。
你的回合时,需将选择的整数对 ( i , j ) (i, j) (i,j) 按顺序以空格分隔输出至标准输出:
i i i j j j
高桥君的回合时,将通过标准输入给出两个整数 i i i 和 j j j:
i i i j j j
当 ( i , j ) = ( − 1 , − 1 ) (i, j) = (-1, -1) (i,j)=(−1,−1) 时,表示你已获胜且游戏结束,此时需立即终止程序。
其他情况下, ( i , j ) (i, j) (i,j) 表示高桥君选择的整数对。
输入格式
见「交互方式」。
输出格式
见「交互方式」。
说明/提示
约束条件
- 2 ≤ N ≤ 100 2 \leq N \leq 100 2≤N≤100
- 1 ≤ U i < V i ≤ N 1 \leq U_i < V_i \leq N 1≤Ui<Vi≤N
- 给定的图是树。
- 输入均为整数。
注意事项
- 每次输出后,需在末尾添加换行符并刷新标准输出缓冲区。否则可能导致评测结果为 TLE 。 \footnotesize\color{red}\textsf{\textbf{每次输出后,需在末尾添加换行符并刷新标准输出缓冲区。否则可能导致评测结果为 \colorbox{#f0ad4e}{\color{white}{TLE}}。}} 每次输出后,需在末尾添加换行符并刷新标准输出缓冲区。否则可能导致评测结果为 TLE。
- 若在交互过程中输出格式错误或程序意外终止,评测结果将不确定。
- 游戏结束后请立即终止程序,否则评测结果不确定。
交互示例
| 输入 | 输出 | 解释 |
|---|---|---|
| 4 1 2 2 3 3 4 \begin{matrix} \texttt{4 { }} \\ \texttt{1 2} \\ \texttt{2 3} \\ \texttt{3 4} \end{matrix} 4 1 22 33 4 | 首先,你收到 N N N 和 G G G 的边信息。 | |
| First \texttt{First} First | 你选择先手行动。 | |
| 1 4 \texttt{1 4} 1 4 | 你在顶点 1 1 1 和 4 4 4 之间添加一条边 | |
| -1 -1 \texttt{-1 -1} -1 -1 | 高桥无法继续操作,你获胜。评测结果返回 AC \colorbox{#5cb85c}{\footnotesize\textsf{\textbf{\color{white}{AC}}}} AC。 |
解题思路
题目要求我们没有奇环,所以我们将这棵树进行二分图染色(父节点与子节点的颜色不一样且只有两种颜色)。然后我们暴力查找所有没有连过边且颜色相异的 i , j i, j i,j,将 ( i , j ) (i, j) (i,j) 存下来。如果存下来的边数为奇数,那么选择先手,否则后手。
因为如果环为奇环那么首尾位颜色一定一样,比如 0 → 1 → 0 0 \to 1 \to 0 0→1→0,而偶环 0 → 1 → 0 → 1 0 \to 1 \to 0 \to 1 0→1→0→1 首尾位置颜色不同,并且这个环一定是树上的一条路径再加上一条我们自己连的边,所以显然。
至于先手后手应该不难理解吧,例如有 3 3 3 条边,如果你后手,那么高桥选 1 1 1 条,你又选 1 1 1 条,最后高桥选 1 1 1 条,到你的时候发现不管怎么选都会构成奇环,所以只能先手,证明偶数后手同理。
接下来我们就只需要标记所有出现过的 ( i , j ) (i, j) (i,j),再找到没有标记过的 ( x , y ) (x, y) (x,y) 输出即可。
CODE:
//ChatGPT 添加的注释
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
vector<int> v[N];
vector<pair<int, int >> v2;
map<pair<int, int>, bool > m;
bool color[N]; // 用于标记每个节点的颜色(0 或 1)
inline void dfs(int x, int fa) {color[x] = color[fa] ^ 1; // 当前节点的颜色与父节点颜色不同for (auto u : v[x]) {if (u ^ fa) {dfs(u, x);}}
}
int main() {
// ios::sync_with_stdio(false);
// ios_base::sync_with_stdio(false);
// cin.tie(0), cout.tie(0);int n;cin >> n;for (int i = 1; i < n; i++) {int u, V;cin >> u >> V;if (u > V) swap(u, V); // 统一标记规则m[ {u, V}] = 1; // 标记边 (u, v) 存在v[u].push_back(V);v[V].push_back(u);}// 二分图染色dfs(1, 0);// 找到所有颜色不同且没有直接连接的合法边for (int i = 1; i <= n; i++) {for (int j = i + 1; j <= n; j++) {if (color[i] ^ color[j] && !m[ {i, j}]) {v2.push_back({i, j}); // 存储合法边}}}// 判断谁先手if (v2.size() % 2 == 0) { // 如果合法边数是偶数,后手cout << "Second\n";} else {cout << "First\n" << v2[0].first << ' ' << v2[0].second << "\n";m[ {v2[0].first, v2[0].second}] = 1; // 标记已选择的边}int id2 = 0;while (1) {int u, v;cin >> u >> v; // 读取高桥的选择if (u == -1 && v == -1) {return 0; // 高桥选择退出,游戏结束}m[ {min(u, v), max(u, v)}] = 1; // 标记已选择的边// 跳过已选择的边,找到下一条合法边while (m[ {v2[id2].first, v2[id2].second}]) {id2++;}// 输出我的选择cout << v2[id2].first << ' ' << v2[id2].second << "\n";id2++;}return 0;
}
相关文章:
AT_abc398_e [ABC398E] Tree Game 题解
题目传送门 题目大意 题目描述 本题是一道交互题(你的程序需要通过输入输出与评测系统进行交互)。 给定一棵包含 N N N 个顶点的树 G G G,顶点编号为 1 1 1 至 N N N。第 i i i 条边连接顶点 U i U_i Ui 和 V i V_i Vi。 你和…...
CSI-external-provisioner
main() 这段Go代码是一个CSI(容器存储接口)Provisioner(供应器)的实现,用于在Kubernetes集群中动态提供持久卷。代码涉及多个组件和步骤,下面是对关键部分的解释: 初始化和配置 命令行标志和…...
android中dp和px的关系
关于android的dp和px的关系是我刚开始学习android的第一个知识点,不知不觉学安卓也有一年了,但是偶然间我发现我理解的dp和px的关系一直是错的,真的是有一点搞笑,今天特意写一篇博客纪念一下这个我理解错一年的知识点。 dp和px之间…...
DeepSeek模型在非图形智能体的应用中是否需要GPU
答:不一定 概念 1、是否需要GPU与应用是否图形处理应用无关 2、文本内容智能体大多也需要GPU来提供更好的性能 3、DeepSeek模型在非图形智能体的应用中是否需要GPU取决于具体的模型版本和部署环境 不需要GPU的模型版本 DeepSeek-R1-1.5B: 这…...
4.14代码随想录第四十三天打卡
图论理论基础 https://www.programmercarl.com/kamacoder/%E5%9B%BE%E8%AE%BA%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html 98. 所有可达路径 (1)题目描述: (2)解题思路: #include <iostream> #include <vector> #include <list> using namespace std;vec…...
【视频目标分割论文集】Efficient Track Anything0000
github 摘要 视频对象分割和追踪任意目标领域出现了强大的工具——分割任意模型 2(SAM 2)。SAM 2 实现令人印象深刻的视频对象分割性能的关键组成部分包括用于帧特征提取的大型多阶段图像编码器,以及存储过去帧记忆上下文以辅助当前帧分割的…...
码率自适应(ABR)决策的直播场景
直播场景 1. 直播场景的普遍框架与工作原理 主播端:即各类主播(游戏、网红歌手、户外达人等),通过手机端或者个人电脑在线直播录制个人活动。 编码服务器:主播端上传视频流以后,编码服务器根据相应的编码转…...
SCP-Firmware安全通告:CVE-2024-11863和CVE-2024-11864
安全之安全(security)博客目录导读 目录 一、概述 二、CVE详情 三、受影响产品 四、修复建议 五、致谢 六、版本历史 一、概述 在SCP固件(SCP-Firmware)中发现两处安全漏洞,可能允许普通世界特权软件(normal world privileged softwareÿ…...
Redis高频面试题(含答案)
当然可以,Redis 是面试中非常常见的高频考点,尤其在后台开发、分布式系统、缓存设计等方向,面试官常常通过 Redis 来考察你的高并发处理能力、系统设计能力和对缓存一致性理解。 以下是一些典型 Redis 的面试场景题目类型和你可以如何回答的思路: ✅ 一、基础使用类问题 …...
双按键控制LED(中断优先级)
1.启动时,两个LED灯熄灭,1秒钟后(定时器实现),LED自动点亮; 2.按键1按下后,通过中断int0把两个LED熄灭5s时间,int0优先级设置为最高(优先级必须设置,设置后才…...
(四)机器学习---逻辑回归及其Python实现
之前我们提到了常见的任务和算法,本篇我们使用逻辑回归来进行分类 分类问题回归问题聚类问题各种复杂问题决策树√线性回归√K-means√神经网络√逻辑回归√岭回归密度聚类深度学习√集成学习√Lasso回归谱聚类条件随机场贝叶斯层次聚类隐马尔可夫模型支持向量机高…...
代码随想录第17天:二叉树
一、二叉搜索树的最近公共祖先(Leetcode 235) 由于是二叉搜索树,节点的值有严格的顺序关系:左子树的节点值都小于父节点,右子树的节点值都大于父节点。利用这一点,可以在树中更高效地找到最低公共祖先。 c…...
超越CUDA:ROCm与oneAPI在异构计算中的性能对比实验(国产GPU生态下的开发路径探索)
一、异构计算生态的竞争格局 当前异构计算领域呈现“一超多强”格局:英伟达凭借CUDA生态占据90%以上的AI训练市场份额,而AMD的ROCm与英特尔的oneAPI通过差异化技术路线持续挑战其垄断地位。二者在国产GPU生态建设中展现出独特价值—— R…...
全新电脑如何快速安装nvm,npm,pnpm
以下是全新电脑快速安装 nvm、npm 和 pnpm 的详细步骤,覆盖 Windows/macOS/Linux 系统: 一、安装 nvm(Node Version Manager) 1. Windows 系统 下载安装包: 访问 nvm-windows 官方仓库,下载 nvm-setup.ex…...
面试篇 - GPT-1(Generative Pre-Training 1)
GPT-1(Generative Pre-Training 1) ⭐模型结构 Transformer only-decoder:GPT-1模型使用了一个12层的Transformer解码器。具体细节与标准的Transformer相同,但位置编码是可训练的。 注意力机制: 原始Transformer的解…...
测试用例如何编写
综合起来,做测试用例时,需要考虑两个方面(主要配合接口测试) ①页面上显示的数据是从哪里来的,是否有全部显示 -- 简单来说就是数据效验②页面上显示的数据是否有交互/依赖(操作的先后顺序会影响页面显示的…...
读者、写者问题优化
#include <stdio.h> #include <time.h> #include <stdlib.h> #include <unistd.h> #include <pthread.h> #include <semaphore.h> #define NUM_READERS 5 #define NUM_WRITERS 5 // 定义信号量和全局变量 sem_t sdata, srcount; int rea…...
AI推理强,思维模型也有功劳【60】启发式偏差思维
giszz的理解:你以为你以为的,就是对的吗?以谨慎的心态去面对不确定,保持空杯心态,不要因走捷径而出现偏差。 一、定义 启发式偏差思维模型是指人们在面对复杂问题或不确定情境时,倾向于使用启发式…...
【从零实现高并发内存池】内存池整体框架设计 及 thread cache实现
📢博客主页:https://blog.csdn.net/2301_779549673 📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! &…...
3.6 函数图像描绘
1.函数描图步骤 2.渐进性 2.1 水平渐进线 2.2 垂直渐进线 2.3 斜渐近线 3.作图...
从零开始:前端开发者的SEO优化入门与实战
从零开始:前端开发者的SEO优化入门与实战 一、SEO是什么?——给网站写一份“高颜值简历” 想象一下,你精心装修了一家米其林餐厅,但食客们却找不到门牌号,甚至地图上连个定位都没有——这大概就是网站不做SEO的下场。…...
电商中的订单支付(内网穿透)
支付页面 接口文档 Operation(summary"获取订单信息") GetMapping("auth/{orderId}") public Reuslt<OrderInfo> getOrderInfo(Parameter(name"orderId",description"订单id",requiredtrue) PathVaariable Long orderId){OrderI…...
ESP32开发之ubuntu环境搭建
1. 在Ubuntu官网下载Ubuntu server 20.04版本https://releases.ubuntu.com/20.04.6/ 2. 在vmware下安装Ubuntu 3. 改Ubuntu静态IP $ sudo vi /etc/netplan/00-installer-config.yaml# This is the network config written by ‘subiquity’ network: renderer: networkd eth…...
2025年,HarmonyOS认证学习及考试
HarmonyOS应用开发者认证考试 基础认证 通过系统化的课程学习,熟练掌握 DevEco Studio,ArkTS,ArkUI,预览器,模拟器,SDK 等 HarmonyOS 应用开发的关键概念,具备基础的应用开发能力。 高级认证…...
空间信息可视化——WebGIS前端实例(一)
技术栈:原生HTML 源代码:CUGLin/WebGIS: This is a project of Spatial information visualization 4 全国贫困县可视化系统 4.1 系统设计思想 党的十九大报告明确指出,要“确保到2020年我国现行标准下农村贫困人口实现脱贫,贫困县全部摘帽,解决区域…...
10.第二阶段x64游戏实战-添加计时器
免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 上一个内容:9.第二阶段x64游戏实战-创建项目代码获取人物属性 效果图: 当前游戏…...
搭载DeepSeek|暴雨AI教育一体机加速AI教育普及
近日,在全国智算大会上,暴雨公司展示了新一代 AI 教育一体机,通过全栈国产化技术与 DeepSeek 模型的深度适配,打造低成本、高性能的人工智能教育解决方案,助力 AI 教育普及与教育数字化转型。 暴雨AI教育一体机&#…...
【论文阅读】MOE奠基论文《Adaptive Mixtures of Local Experts》
《Adaptive Mixtures of Local Experts》 前言一、让协同学习竞争1.1 方案1.2 方案演变的由来 二、让竞争学习协同2.1 竞争学习2.2 竞争学习协同 三、案例验证3.1 任务背景3.2 实验结果3.3 后续工作 (Future Work) 前言 论文提出了一个基于多个分离网络的有监督学习方案,该方案…...
Python(14)Python内置函数完全指南:从基础使用到高阶技巧
目录 背景介绍一、内置函数全景分类1. 数据类型转换(15个)2. 数学运算(12个)3. 迭代处理(9个)4. 对象操作(11个)5. 输入输出(4个) 二、高阶函数应用场景1. en…...
VM虚拟机安装及Ubuntu安装配置
VM虚拟机安装及Ubuntu安装配置 1、VM虚拟机安装2、创建虚拟机3、Ubuntu系统安装4、编译环境配置4.1 、Ubuntu和 Windows文件互传 文件互传4.1.1、 开启Ubunt下的FTP服务 4.2、 Ubuntu下NFS和SSH服务开启4.2.1、 NFS服务开启4.2.2、 SSH服务开启 4.3、 交叉编译器安装4.3.1 安装…...
