[ABC398G] Not Only Tree Game

news/2025/10/5 8:48:23/文章来源:https://www.cnblogs.com/liudagou/p/19126243

因为不存在奇环,所以显然构成一个二分图。

我们进行一些变量的定义:

  • \(x\) 表示在满足添加了之后不改变图的联通性且不产生奇环的情况下,可以添加的变数。
  • \(ee\) 表示两侧都是偶数个节点的联通块的数量。
  • \(oo\) 表示两侧都是奇数个节点的联通块的数量。
  • \(eo\) 表示一侧是偶数一侧是奇数的联通块的数量。
  • \(iso\) 表示孤点的数量。

先说结论:

不存在平局的情况,如果先手不赢肯定是后手赢,下面只考虑先手。

如果 \(n\) 是奇数:

先手胜利当且仅当 \(m\) 是奇数。

如果 \(n\) 是偶数:

如果 \(eo=0\),那么先手胜利当且仅当 \(iso/2+x\) 是奇数。
如果 \(eo\in\{1,2\}\),那么先手必定赢。
如果 \(eo>2\),那么先手胜利当且仅当 \(m\) 是奇数。

下面我们直接开始证明。

如果 \(n\) 是奇数:

显然我们最后得到的图一定是一个联通的二分图。
那么因为 \(n\) 是奇数,所以必然会划分成一侧偶数个点,一侧奇数个点。
于是形成的边一定是偶数个,所以最后的胜利就只和原本已经添加的边的数量有关了。

如果 \(n\) 是偶数,且 \(eo=0\)

因为 \(oo\)\(ee\) 的点数都是偶数,所以 \(iso\) 的数量肯定是偶数。
因为 \(eo=x=iso=0\) 的情况是必败的,其满足 \(iso/2+x\) 是偶数,那么我们只需要保证让对面不论怎么操作,我们都可以进行一个操作让 \(iso/2+x\) 在回到对手手里时是奇数就可以通过数学归纳法证明了。
我们考虑现在都可以进行什么操作:

  1. 添加一条不影响联通性的边。

这会让 \(x\) 的奇偶性改变,于是 \(ios/2+x\) 是奇数,我们直接跟着进行一次同样的操作就行了。
如果 \(x=0\) 那么,显然我们直接把两个孤立点点起来。

  1. 在孤立点之间连接一条边。

类似上面的,我们考虑把孤立点连起来,或者连接不改变联通性的边即可。

  1. 在孤立点和联通块之间连接一条边。

我们也拿一个孤立点,和他在对称的位置连接,这样我们两个人增加的奇偶性就是一样的。
这是因为不存在任何一个操作会导致在对手操作的时候出现 \(eo\) 的情况(包括下面的操作)。

  1. 在联通块和联通块之间连接一条边。

因为全部都是 \(ee\)\(oo\),这显然也会改变 \(x\) 的奇偶性,于是我们直接操作一次不改变联通性的边就行了,因为合并了新的联通块所以不用担心 \(x=0\)

于是我们拿到之后直接合并两个孤立点或者链一个不影响连通性的边,这样就把 \(iso/2+x\) 是偶数的局面给了对手。
然而,我们上面又证明了不论对手怎么操作,我们都可以把 \(iso/2+x\) 是奇数的情况还回去,所以我们必胜。

如果 \(n\) 是偶数,且 \(oe=1\)

容易理解 \(iso\) 是奇数,那么我们拿出一个奇点与 \(eo\) 连接,这样可以归纳到上面的情况。
如果 \((iso-1)/2+x\) 是奇数,那么我们把孤点和 \(eo\) 的奇数侧连边,给对手一个 \(eo=0,iso/2+x\) 是偶数的局面,
反之,我们把孤点向 \(eo\) 的偶数侧连边,也可以达到同样的效果。

如果 \(n\) 是偶数,且 \(oe=2\)

我们可以把两个 \(oe\) 合并起来,来回到 \(eo=0\) 的情况。
如果 \(iso/2+x\) 是偶数,那么我们把两个 \(eo\) 的奇数和偶数放在一边,这样不会改变 \(x\) 的奇偶性,反之转过来放就行了。

如果 \(n\) 是偶数,且 \(oe\ge 2\)

我们每一次操作可以把 \(oe\) 减少 \(1\)\(2\),又因为如果某个人把 \(eo\) 操作到小于 \(3\) 就必败,所以一个结论就是最终 \(oe\) 会保持在 \(3\)
于是这就相当于一个 \(n\) 是奇数的问题了。

我们直接模拟即可。

#include<iostream>
#include<bitset>
#include<vector>
#define int long long
using namespace std;
const int N=2e5+5;
int n,m,iso,eo,ee,oo,x;
bitset<N> vis;
vector<int> v[N];
void dfs(int x,int &s1,int &s2){if(vis[x]) return;vis[x]=1,s1++;swap(s1,s2);for(int i:v[x]) dfs(i,s1,s2);swap(s1,s2);
}
signed main(){ios::sync_with_stdio(false);cin.tie(nullptr);cin>>n>>m,x=-m;for(int i=1,x,y;i<=m;i++){cin>>x>>y;v[x].push_back(y);v[y].push_back(x);}for(int i=1;i<=n;i++){if(vis[i]) continue;if(v[i].empty()){iso++;continue;}int s1=0,s2=0;dfs(i,s1,s2);if(s2&1) swap(s1,s2);if(s1&1){if(s2&1) oo++;else eo++;}else ee++;x+=s1*s2;}if(n&1||eo>2) cout<<((m&1)?"Aoki\n":"Takahashi\n");else if(!eo) cout<<((iso/2+x&1)?"Aoki\n":"Takahashi\n");else cout<<"Aoki\n";return 0;
}

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

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

相关文章

邯郸网站建设浩森宇特外贸网站建站n

代理模式是一种结构型设计模式&#xff0c;让开发者能够提供对象的替代品或其占位符。代理对象控制着对于原对象的访问&#xff0c;并允许在将请求提交给原对象前后进行一些处理。代理模式为原对象提供一种代理以控制对这个对象的访问&#xff0c;并由代理对象控制对原对象的引…

Linux 的编辑器--vim - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

深入解析:Java基础(二):八种基本数据类型详解

深入解析:Java基础(二):八种基本数据类型详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &…

电子商务公司网站设计wordpress标签归档

BeanFactoryPostProcessor和BeanPostProcessor这两个接口都是初始化bean时对外暴露的入口之一&#xff0c;和Aware类似&#xff08;PS:关于spring的hook可以看看Spring钩子方法和钩子接口的使用详解讲的蛮详细&#xff09;本文也主要是学习具体的钩子的细节&#xff0c;以便于实…

上海网站建设服务是什么网络企业网站建设方案

&#x1f451;专栏内容&#xff1a;Java⛪个人主页&#xff1a;子夜的星的主页&#x1f495;座右铭&#xff1a;前路未远&#xff0c;步履不停 目录 一、方法的概念1、什么是方法&#xff1f;2、方法的定义3、方法调用的过程 二、方法重载1、重载的概念2、方法签名 在日常生活中…

邯郸专业网站建设报价某qq非主流个性网源码qq空间网站源码dede内核+采集规则

目录 一.部署单体项目 1.远程数据库 1.1远程连接数据库 1.2 新建数据库运行sql文件 2.部署项目到服务器中 3.启动服务器运行 二.部署前后端分离项目 1.远程数据库和部署到服务器 2.利用node环境启动前端项目 3.解决主机无法解析服务器localhost问题 方法一 ​编辑 方法二 一.部…

用什么做视频网站比较好的网站右键禁止

非线性容器实现能快速查找的数据结构&#xff0c;其底层通过 hash 或者红黑树实现&#xff0c;包括 HashMap、HashSet、TreeMap、TreeSet、LightWeightMap、LightWeightSet、PlainArray 七种。非线性容器中的 key 及 value 的类型均满足 ECMA 标准。 HashMap HashMap 可用来存…

越秀凭一己之力打破了行业天花板 - 智慧园区

近几年,房地产市场的供需关系已经发生深刻变化,整个行业都在研究怎么能在营销上作出突围。在这个过程中,数字营销几乎成了必选项。 然而,即使布局了数字营销业务,许多 房企面临的营销困境还是在加深 ,明源君认为…

贷款公司网站模板建app需要多少钱

定义 存储器单位时间内读出/写入的位数或字节数 单位 单位是bps&#xff08;位/秒&#xff09;或B/s&#xff08;字节/秒&#xff09; 计算公式 基于存储器时频率和数据总线位数的计算方法 公式&#xff1a;带宽 存储器时频率 存储器数据总线位数 / 8 基于存取周期和每…

详细介绍:静态资源js,css免费CDN服务比较

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

如何做qq钓鱼网站深圳网页设计公司在哪

文章首发于公众号「码上GIS」&#xff0c;欢迎关注。文中流向图和城市关系强度图的 ArcMap 10.5 Mxd 工程和数据可在公众号后台回复「190708」和「190709」获取不记得是从哪年开始&#xff0c;每年春运期间&#xff0c;百度都会发布个春运大数据&#xff0c;其中最让人印象深刻…

在AI技术唾手可得的时代,挖掘JavaScript学习资源的新需求成为关键

本文分析了一个广受欢迎的JavaScript学习资源库,该项目系统整理了33个核心JavaScript概念的学习资料,涵盖了从基础数据类型到高级设计模式的完整知识体系,为开发者提供了全面的学习路径和参考资料。a.内容描述核心功…

网站模板网站wordpress手机号网站

前言&#xff1a; 子窗口控件是特殊的子窗口&#xff0c;不需要我们注册窗口类&#xff0c;系统已经注册好了&#xff0c;我们只需要在创建时选择相应的窗口类名。常用的子窗口控件有按钮BUTTON、组合框COMBOBOX、编辑框EDIT、列表框LISTBOX、静态框STATIC、滚动条SCROLLBAR等类…

做生意网站wordpress 栏目页

符号在前就先加/减&#xff0c;符号在后就后加/减 在写代码的过程中&#xff0c;常见的一种情况是需要某个整数类型变量增加 1 或减少 1&#xff0c;Java 提供了一种特殊的运算符&#xff0c;用于这种表达式&#xff0c;叫做自增运算符&#xff08;)和自减运算符&#xff0…

洛谷P9676 [ICPC 2022 Jinan R] Skills

洛谷P9676 [ICPC 2022 Jinan R] Skills P9676 [ICPC 2022 Jinan R] Skills 设计状态时,可以知道要用当前的压掉一维,\(dp_{i,j,0/1/2}\) 表示当前选第 \(0/1/2\) 种,\(i,j\) 表示其余两种的最后选择时间。 如果没有…

微信小程序(uniapp)搭建腾讯云 IM 消息撤回

微信小程序(uniapp)搭建腾讯云 IM 消息撤回2025-10-05 08:13 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: b…

读人形机器人31未来30年

读人形机器人31未来30年1. 先进的技术前景 1.1. 自主决策与认知计算1.1.1. 预计到2055年,最重大的突破之一将是具备先进自主决策能力的人形机器人的出现1.1.2. 借助认知计算和神经网络架构方面的突破,这些机器人将能…

【java面试】redis篇 - 指南

【java面试】redis篇 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco",…

做推文网站营销型网站建设广告语

简洁的结论&#xff1a; 系统环境 ubuntu22.04 nvidia-535解决方案 删除/etc/X11/xorg.conf 文件 记录一下折腾大半天的问题。 ubuntu系统是22.04,之前使用的时候更新驱动导致桌面崩溃&#xff0c;重新安装桌面安装不上&#xff0c;请IT帮忙&#xff0c;IT一番操作过后也表示…