当前位置: 首页 > news >正文

[AGC016D] XOR Replace

[AGC016D] XOR Replace

观察操作的性质,记长度为 \(n+1\) 的序列 \(c\) 满足:

\[c_i=\begin{cases}a_i & i \leq n \\a_1 \oplus a_2 \oplus \dots \oplus a_n & i = n + 1\end{cases} \]

则每次操作相当于选择 \(i \in [1,n]\),交换 \(c_i\)\(c_{n+1}\)

我们要使 \(c\) 的前 \(n\) 个数与 \(b\) 相同,发现 \(c\) 可以任意交换,于是我们便可以判无解。

异或的性质用完了,接下来我们考虑图论建模刻画这个过程。

首先对于 \(c_i = b_i\),我们可以不用管。

接下来考虑对剩下的 \((c_i,b_i)\) 连边,分两种情况考虑。

首先是 \(c_{n+1}\) 无连边的情况,此时每个点的度数必然是偶数。

每个连通块都存在一条欧拉回路,考虑对于欧拉回路如何操作。

我们对于路径 \(u_1 \to u_2 \to \dots \to u_m \to u_1\),采取如下过程:

  • 交换 \(u_1\)\(c_{n+1}\)

  • 交换 \(u_2\)\(c_{n+1}\)

  • \(\dots\)

  • 交换 \(u_n\)\(c_{n+1}\)

  • 交换 \(u_1\)\(c_{n+1}\)

此时的答案是边数与连通块个数之和。这里的连通块不计孤立点,因为孤立点无需考虑。

接下来考虑 \(c_{n+1}\) 有连边的情况,此时会将欧拉回路拆成欧拉路径,答案可以 \(-1\)

//Ad astra per aspera
#include<iostream>
#include<cstdio>
#include<vector>
#include<map>
using namespace std;
int a[100010],b[100010];
map<int,vector<int> > G;
map<int,bool> vis;
void dfs(int u){vis[u]=true;for(int i=0;i<G[u].size();i++){int v=G[u][i];if(!vis[v]){dfs(v);}}
}
int main(){int n;scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&a[i]);a[n+1]^=a[i];}for(int i=1;i<=n;i++){scanf("%d",&b[i]);}map<int,int> dict;for(int i=1;i<=n+1;i++){dict[a[i]]++;}for(int i=1;i<=n;i++){dict[b[i]]--;if(dict[b[i]]<0){printf("-1");return 0;}}int ans=0;for(int i=1;i<=n;i++){if(a[i]!=b[i]){ans++;G[a[i]].push_back(b[i]);G[b[i]].push_back(a[i]);}}for(map<int,vector<int> > :: iterator iter=G.begin();iter!=G.end();iter++){int u=iter->first;vector<int> vec=iter->second;if(!vis[u]  &&  !vec.empty()){ans++; dfs(u);}}if(!G[a[n+1]].empty()){ans--;}printf("%d",ans);return 0;
}
http://www.jsqmd.com/news/519615/

相关文章:

  • 质谱基础与蛋白质组学:MALDI-TOF、ESI-MS/MS——肽段鉴定与定量的原理
  • 人社部生殖健康咨询技术培训,北京守嘉职业技能,私密行业持证上岗首选 - 品牌排行榜单
  • 蛋白质鉴定算法:从数据库搜索到从头测序,Mascot、SEQUEST、MaxQuant的工作机制
  • 2026更新版!9个AI论文网站测评:本科生毕业论文写作必备工具推荐
  • 【前沿解析】2026年3月22日:AI视频生成工业化与国产大模型效率革命的双重突破——从小云雀短剧Agent到小米MiMo-V2的范式转移
  • 不用Chrome也能用Vue DevTools:Edge浏览器专属配置指南
  • Python数据分析/机器学习中的内存陷阱:用pandas处理大数据时如何避免OOM(附memory_profiler使用技巧)
  • 2026 AI 新局:从“数字员工”到自主智能体,Golang 如何构建企业级 AI 治理基石
  • 定量蛋白质组学:iTRAQ、TMT、SILAC与标记-free方法的统计分析与比较
  • layuimini模板的快速浏览方法
  • 真心不骗你!AI论文网站 千笔写作工具 VS PaperRed,专为论文写作全流程设计
  • 计算机毕业设计 java 疫情防控形势下的高校食堂订餐管理系统 SpringBoot 高校食堂疫情防控订餐系统 JavaWeb 疫情期间高校餐饮订餐管理平台
  • openclaw安装skills - Leonardo
  • 对比一圈后!全领域适配的AI论文软件 —— 千笔·专业论文写作工具
  • 翻译后修饰组学:磷酸化、糖基化、泛素化修饰的富集与鉴定技术
  • 力扣打卡——螺旋矩阵、旋转图像
  • 微信可以用龙虾了!LobsterAI有道龙虾成国内首批接入微信“桌面级Agent”
  • 生殖健康咨询师培训哪家好?北京守嘉职业技能权威认证,线上易学易考 - 品牌排行榜单
  • 给宇树Go2机器人装‘眼睛’:在Jetson Orin Nano上从零部署YOLOv5的保姆级避坑实录
  • 计算机毕业设计 java 疫情期间社区人员流动系统 基于 SpringBoot 的社区疫情人员流动管理平台 JavaWeb 疫情期间社区人员出入登记系统
  • Hive中的排序与分桶技术详解
  • AI 在工作中的一些使用
  • 大数据领域HBase的高可用架构设计
  • 推荐系统召回算法实战:从协同过滤到YouTube深度学习,5种方法对比与选型指南
  • 蛋白质相互作用网络:亲和纯化质谱、酵母双杂交与计算方法预测
  • 代谢组学数据处理:峰提取、注释、统计分析与代谢通路富集
  • 47mt视角下考虑火蓄深度调峰的电网经济运行优化之旅
  • 探索numpy库:从基础到高级操作的详细指南
  • KiCad新手必看:从原理图到PCB的完整避坑指南(附ERC/DRC详解)
  • Comsol 实现光子晶体中拓扑荷相关的有趣仿真探索