AtCoder ABC E - Min of Restricted Sum 题解

devtools/2025/3/14 22:51:58/

根据输入考虑建图,x、y两个下标的边权为z,建无向图

这样我们可以得到一些连通块。根据异或和的性质,对于每一个连通块,我们只要知道其中一个点的点权就能推出所有的点权。

最小值考虑贪心,针对当前连通图所有点权二进制数的每一位,假如这一位是1,要想保留更多的1就让别的本位为1的数的这一位是0,于是统计每一位1的个数,若1比0多则起点这一位为1,这样保证了0多。

判定可行性:深搜跑一边,如果遍历过了但是点权不符合多个边的要求,那麽就是无解


int head[N], IDX = 0;struct NODE{int t, ne;ll w=0;}ed[N];
void add(int s,int t,ll w){ed[++IDX].ne = head[s]; ed[IDX].t = t; head[s] = IDX;ed[IDX].w = w;
}
ll n,m;
ll x,y,z,tmp;
bool vis[N];
int val[N],bit[35],ans[N];
map <PII,bool> hse;
bool f = 1;
void dfs1(int now,int st)
{tmp++;val[now] = st;vis[now] = 1;for(int i=0;i<32;i++){if(st>>i&1){bit[i]++;}}for(int i=head[now];i;i=ed[i].ne){int t = ed[i].t;int w = ed[i].w;if(!vis[t]){dfs1(t,st^w);}else{//cout<<val[t]<<' '<<(st^w)<<endl;if(val[t]!=(st^w)){f=0;return ;}}}
}
void dfs2(int now)
{vis[now] = 1;for(int i=head[now];i;i=ed[i].ne){int t = ed[i].t;if(!vis[t]){ans[t] = (ans[now]^ed[i].w);dfs2(t);}}
}
void solve()
{cin>>n>>m;for(int i=1;i<=m;i++){cin>>x>>y>>z;add(x,y,z);add(y,x,z);}for(int i=1;i<=n;i++){if(!vis[i]){for(int j=0;j<32;j++){bit[j]=0;}tmp=1;dfs1(i,0);//cout<<tmp<<endl;if(f==0){cout<<-1<<endl;return ;}for(int j=0;j<32;j++){if(bit[j]>=tmp-bit[j]){ans[i]|=1<<j;}}}}for(int i=1;i<=n;i++) vis[i]=0;for(int i=1;i<=n;i++){if(!vis[i]){dfs2(i);}}for(int i=1;i<=n;i++){cout<<ans[i]<<' ';}
}


http://www.ppmy.cn/devtools/166866.html

相关文章

SpringMVC 基本概念与代码示例

1. SpringMVC 简介 SpringMVC 是 Spring 框架中的一个 Web 层框架&#xff0c;基于 MVC&#xff08;Model-View-Controller&#xff09; 设计模式&#xff0c;提供了清晰的分层结构&#xff0c;适用于 Web 应用开发 SpringMVC 主要组件 DispatcherServlet&#xff08;前端控…

不同AI生成的PHP版雪花算法

OpenAI <?php /*** Snowflake 雪花算法生成器* 生成的 64 位 ID 结构&#xff1a;* 1 位 保留位&#xff08;始终为0&#xff0c;防止负数&#xff09;* 41 位 时间戳&#xff08;毫秒级&#xff0c;当前时间减去自定义纪元&#xff09;* 5 位 数据中心ID* 5 …

每天一篇《目标检测》文献(一)

今天看的是《改进 YOLOv8 的轻量化密集行人检测方法》。 目录 一、摘要 二、背景介绍 三、YOLOv8介绍 四 改进结构介绍 4.1 双卷积内核&#xff08;DualConv&#xff09; 4.2 RS-C2f模块 4.3 空间金字塔池化改进&#xff08;SPPELAN_BiFPN&#xff09; 4.4 损失函数优化…

SIP 协议详解:原理、用途与应用场景

1. SIP 协议简介 SIP&#xff08;Session Initiation Protocol&#xff0c;会话初始化协议&#xff09;是一个应用层协议&#xff0c;属于计算机网络的七层模型&#xff08;OSI 模型&#xff09;中的第七层。在计算机网络中&#xff0c;OSI 参考模型将网络通信划分为以下 7 层…

大话机器学习三大门派:监督、无监督与强化学习

以武侠江湖为隐喻&#xff0c;系统阐述了机器学习的三大范式&#xff1a;​监督学习&#xff08;少林派&#xff09;​凭借标注数据精准建模&#xff0c;擅长图像分类等预测任务&#xff1b;无监督学习&#xff08;逍遥派&#xff09;​通过数据自组织发现隐藏规律&#xff0c;…

Git 的详细介绍及用法

一、Git 的优点 分布式版本控制 每个开发者都拥有完整的仓库副本&#xff0c;无需依赖中央服务器&#xff08;如 SVN&#xff09;。支持离线操作&#xff08;提交、查看历史、创建分支等&#xff09;。 高效的分支管理 创建和切换分支速度快&#xff08;几乎是瞬间完成&#x…

【每日五题系列】前端面试高频题目

比如防抖、节流、深度优先遍历和广度优先遍历的实现&#xff0c;还有Promise、async/await这些。 提到了数组扁平化、Localstorage缓存系统设计、ES6模板语法。数组扁平化是一个常见的手写题&#xff0c;应该加入。缓存系统设计可能比较复杂&#xff0c;但作为设计题也是常考的…

生成对抗网络(GAN)原理与应用

目录 一、引言 二、GAN的基本原理 &#xff08;一&#xff09;生成器&#xff08;Generator&#xff09;的工作机制 &#xff08;二&#xff09;判别器&#xff08;Discriminator&#xff09;的工作机制 &#xff08;三&#xff09;对抗训练的过程 三、GAN在AIGC生图中的应…