Hoof and Brain P 题解

news/2025/2/8 11:19:21/文章来源:https://www.cnblogs.com/Tom-tanjiaqi/p/18703883

Hoof and Brain P 题解

Link

模拟考考场上没干出来,赛后几分钟过了。

首先考虑一个简单情况,如果一个节点的出度为 \(0\) ,那么这个节点就是B的必胜点,我们可以将这个点删掉,重复这样的操作,使得每个节点都有出度。

除了上面这一种情况,B赢的情况就只有使得两个棋子重叠了。要使两个棋子重叠,就必须使其中一个棋子没有其他路可以走,也就是说这颗棋子一定可以通过一直走出度为 \(1\) 的点到达另一个棋子。

考虑启发式合并。对于出度为 \(1\) 的节点,我们可以将这个节点和他指向的节点合并,并继承其所有的入度。

最后统计答案时,如果节点不存在,B赢;如果两个节点在同一个节点,B赢;否则H赢。

代码 :

#include <bits/stdc++.h>
#define FASTIO ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace std;
using ll = long long;
using pii = pair<int, int>;
const int N = 1e5 + 5;
set<int> g[N], re[N];
int n, m, q;
int fa[N], siz[N];
queue<int> que;
queue<int> quw;
int find(int x) {if (fa[x] == x) return x;return fa[x] = find(fa[x]);
}
void merge(int x, int y) {x = find(x), y = find(y);if (x == y) return;if (re[x].size() > re[y].size()) swap(x, y);for (int u : re[x]) { // 继承入度re[y].insert(u);g[u].erase(x);g[u].insert(y);if (g[u].size() == 1) quw.push(u);}re[x].clear();fa[x] = y;
}
int main() {FASTIO;cin >> n >> m;for (int i = 1; i <= n; ++i) fa[i] = i; for (int i = 1, u, v; i <= m; ++i) {cin >> u >> v;g[u].insert(v);re[v].insert(u);}for (int i = 1; i <= n; ++i) {if (g[i].empty()) {que.push(i);}}while (que.size()) { // 删点int f = que.front();fa[f] = 0;que.pop();for (int v : re[f]) {g[v].erase(f);if (g[v].empty())que.push(v);}re[f].clear();}for (int i = 1; i <= n; ++i) {if (g[i].size() == 1) quw.push(i);}while (quw.size()) { // 合并int f = quw.front();quw.pop();if (g[f].size() == 1) {merge(f, *g[f].begin());	}}cin >> q;for (int i = 1; i <= q; ++i) {int x, y;cin >> x >> y;if (!fa[x] || !fa[y]) cout << "B";else if (find(x) == find(y)) cout << "B";else cout << "H";}return 0;
}

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

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

相关文章

本地部署 DeepSeek-R1-内部知识库

本地部署 DeepSeek-R1-内部知识库本地部署 DeepSeek-R1-内部知识库环境准备1. 确认系统要求2. 安装 Homebrew一. 安装ollama和启动服务1.1 安装 ollama1.2 启动服务1.3 拉取模型并运行二.运行DeepSeek-R1-集成web页面2.1 运行模型2.2 安装Openweb-UI 界面环境准备 1. 确认系统要…

vscode编写javascript代码时ctrl和f12等快捷键失效

提供一种可能性,由于vscode内置扩展@builtin typescript-language-features被关闭导致无法上下文感知跳转。将其重新启用即可

allegro每次保存时都说提示覆盖原图

保存文件时提示,一般新装的软件才会有这个提示 我们改下设置就不会再弹出这个提示了 Setuo-User Preferences,然后在工具栏搜索Savedb点击搜素,如下图复选框里打勾就行

车流量检测摄像头

车流量检测摄像头广泛应用于城市交通管理、高速公路收费站、停车场管理及大型活动现场等多个领域。在城市中,这些设备为交通信号控制提供数据支持,从而提升通行效率。在高速公路上,它们则用于实时监控车速与流量,以便及时调整收费政策和疏导措施。此外,在停车场中,这类设…

安全帽佩戴智能识别摄像机

安全帽佩戴智能识别摄像机的出现,为安全管理带来了革新性的变化。这种智能摄像机基于先进的计算机视觉技术。其核心算法能够精准地对画面中的物体和人员进行识别。在识别安全帽佩戴情况时,它可以迅速分析图像中每个人员头部的特征,准确判断安全帽是否存在。它像是一位不知疲…

使用 CloudDM 和钉钉流程化管理数据库变更审批

CloudDM 是一个专为团队协同工作打造的数据库数据管控平台。在管控数据库安全变更的过程中,为提高效率,CloudDM 接入了钉钉,支持实时通知与移动办公,满足广大企业用户的实际需求。 本文将介绍如何使用 CloudDM 和钉钉实现高效的数据库变更审批。 接入钉钉 创建钉钉应用登录…

tomcat中部署finereport11.0

手动将finereport11.0部署到Tomcat中1、本文目的 在tomcat中直接访问FineReport的cpt文件,跳过登录。 2、执行步骤创建工作目录将%Tomcat_HOME%\webapps\examples文件复制一份出来,重命名为FR,只保留WEB-INF文件夹,其余全部删除。修改web.xml文件编辑%Tomcat_HOME%/webapps…

富滇银行研发管理从数字化走向智能化 | 通义灵码企业标杆案例

经过几个月的持续优化及通义灵码产品能力的迭代,行内用户活跃度持续提升,AI代码生成占比超过30%,单元测试覆盖率持续提升,周期内未发生重大故障。技术人员已养成使用通义灵码进行编码和研发问答的习惯,进一步推动了软件开发的智能化转型。百年传承,富民兴滇。作为一家拥有…

车间产线作业流程合规检测系统

车间产线作业流程合规检测系统通过在车间内安装多个高清摄像头,车间产线作业流程合规检测系统实时捕捉工人在产线上的操作行为。系统可以自动检测工人在生产过程中是否按照正确的顺序执行任务,是否使用正确的工具,是否遵守安全规定等。如果系统检测到工人的操作行为违规,它…

SQL注入-Windows/Docker 环境部署 SQLi-labs 靶场

一、SQLi-labs简介 SQLi-labs是由印度程序员开发,专门用于练习SQL注入的靶场,其中包含各种注入姿势,并适用于GET和POST等场景。 主要包含:基础错误注入、报错注入、盲注、MySQL读写文件、更新查询注入、插入查询注入、Header头部注入、二次注入、绕过WAF、绕过addslashes函…

openai-whisper+fastapi实现语音转文本

Whisper 是一种通用的语音识别模型。它基于各种音频的大型数据集进行训练,也是一种多任务模型,可以执行多语言语音识别、语音翻译和语言识别。Transformer 序列到序列模型针对各种语音处理任务进行训练,包括多语言语音识别、语音翻译、口语识别和语音活动检测。这些任务共同…

在阿里云ECS上一键部署DeepSeek-R1

DeepSeek-R1 是一款开源模型,也提供了 API(接口)调用方式。据 DeepSeek介绍,DeepSeek-R1 后训练阶段大规模使用了强化学习技术,在只有极少标注数据的情况下提升了模型推理能力,该模型性能对标 OpenAl o1 正式版。DeepSeek-R1 推出后,该模型热度持续攀升。 部署流程点击 部…