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

ARC214-B

官解好抽象~

提供一种思路比较清晰的做法。

拆位

看到异或,首先想到拆位。

对于某一位来说,我们已知每条边上异或的结果,即已知两个节点上这一位是否相同。

任意选一个位置,假定它是 \(1\),DFS 得到其余所有点上的结果,可知此时图上有 \(x\)\(1\)\(y\)\(0\)

实际情况有两种,分别是有 \(x\)\(1\)\(y\)\(0\) 和有 \(x\)\(0\)\(y\)\(1\)

\([0,n]\) 中,我们已知有 \(p\) 个数字在这一位上为 \(1\)\(q\) 个数字在这一位上为 \(0\),考虑以 \(1\) 的个数作为对应关系。

有一下三种情况:

1.\(x=p-1,y=q\)\(x=q,y=p-1\) 因为 \(0\) 的数量对应确定,所以图上的所有数的这一位中少了一个 \(1\),即被拿掉的数字上这一位为 \(1\)

2.\(x=p,y=q-1\)\(x=q-1,y=p\) 同理,可知图上所有数中少了一个 \(0\)

3.若 \(p=q\),上面两种条件同时成立,我们无法确定哪个对应 \(0\),哪个对应 \(1\),故无法分辨。

时间复杂度为 \(O(n\,\,log\,\,m)\)

CODE
#include<bits/stdc++.h>
#define fst first
#define sec second
#define mkp(a,b) make_pair(a,b)
#define usetime() (double)clock () / CLOCKS_PER_SEC * 1000.0
using namespace std;
typedef long long LL;
typedef pair<int,int> pii;
const int maxn=2e5+5;
void read(int& x){char c;bool f=0;while((c=getchar())<48) f|=(c==45);x=c-48;while((c=getchar())>47) x=(x<<3)+(x<<1)+c-48;x=(f ? -x : x);
}
int cnt[25];
int ans[maxn];
bool vis[maxn];
int n,m;
vector<pii> mp[maxn];
void dfs(int u,int p){for(int i=0;i<(int)mp[u].size();i++){int v=mp[u][i].fst;if(vis[v]) continue;vis[v]=1,ans[v]=((mp[u][i].sec&(1<<p)) ? (!ans[u]) : ans[u]);dfs(v,p);}
}
void solve(){read(n),read(m);if(m==0&&n>=1){printf("-1\n");return;}for(int i=1;i<=n;i++) mp[i].clear();for(int i=1;i<=m;i++){int u,v,w; read(u),read(v),read(w);mp[u].push_back(mkp(v,w)),mp[v].push_back(mkp(u,w));}memset(cnt,0,sizeof(cnt));for(int i=0;i<=n;i++){for(int j=0;j<=22;j++){if(i&(1<<j)) ++cnt[j];}}int p=0;bool spj=0;for(int i=0;i<=22;i++){fill(vis+1,vis+n+1,0);ans[1]=1,vis[1]=1;dfs(1,i);int k=0;for(int j=1;j<=n;j++){k+=ans[j];}if(n+1-cnt[i]==cnt[i]){spj=1; break;}if(k==cnt[i]-1||n-k==cnt[i]-1) p|=(1<<i);}if(spj){printf("-1\n");}else{printf("%d\n",p);}
}
int main(){int t; read(t);while(t--) solve();return 0;
}
//^o^
http://www.jsqmd.com/news/361081/

相关文章:

  • 2026年山东排名靠前的汽车学校,哪几家口碑和性价比更好 - 工业品网
  • 开源体素建模工具VoxelShop:探索3D创作的无限可能
  • 2026年热门的硅橡胶加热带/工业加热带哪家质量好生产商实力参考 - 品牌宣传支持者
  • 2026年哈尔滨求推荐会计记账品牌企业,费用怎么收 - 工业品网
  • 2026年比较好的天花铝板/工装铝板公司口碑推荐哪家靠谱 - 品牌宣传支持者
  • 2026年2月北京监控台公司推荐,合理布局与稳固性能深度解析 - 品牌鉴赏师
  • 2026年哈尔滨实力强的会计记账企业,可靠的公司怎么选 - 工业品牌热点
  • 【JAVA开发】—— 使用SDK管理Ubuntu的jdk
  • 2026年选购乘务学校服务,山东万通的优势你知道吗 - myqiye
  • 英雄联盟回放分析工具ROFL-Player使用指南:提升胜率的职业级复盘技巧
  • 如何让小米设备融入智能家居生态?hass-xiaomi-miot的本地化集成方案
  • Spring 异步与线程池实战全解:失效原因、参数调优与 MQ 选型
  • 支招乘务学校选购,靠谱的学校和优质服务怎么找 - mypinpai
  • 3个高效集成步骤:OpenLayers增强工具ol-ext的实战应用指南
  • 从面条代码到工程化:Spyder重构全流程实战指南
  • 探寻青少年无人机培训哪个好,拉菲尔专业保障学习效果 - 工业推荐榜
  • 智能散热调节与风扇转速优化:开源风扇控制工具全攻略
  • 如何将ASS字幕高效转换为WebVTT格式
  • 解读四川木质定制橱柜选购要点,靠谱厂家有哪些 - 工业设备
  • 2026年质量好的电袋复合除尘器/防爆除尘器实力工厂参考怎么选 - 品牌宣传支持者
  • 2026年度权威发布:上海助听器专卖店专业服务与验配实力深度解析 - 十大品牌推荐
  • 2026年质量好的浙江电商财务软件/财务软件系统网址 - 品牌宣传支持者
  • 3大维度解析Canvas编辑器的交互设计与用户体验优化
  • 无人机智能分析工具:提升飞行数据诊断效率的完整解决方案
  • [技术难题]:Lcov RPM包跨系统安装失败的系统性解决方案
  • 完整dab变换器的dsp28335程序,包含状态机,adc中断,抗饱和pi算法等
  • 2026年靠谱的定制打包箱房/拓展型打包箱房可靠供应商参考推荐几家 - 品牌宣传支持者
  • Linux系统Wi-Fi 6优化指南:Realtek 8852AE驱动配置与网络性能调优
  • 2026年专业的大连日本留学中介/大连日本留学哪家靠谱实力工厂参考 - 品牌宣传支持者
  • 5个突破性技巧:用UAVLogViewer实现无人机日志深度分析