AtCoder ABC E - Min of Restricted Sum 题解

server/2025/3/13 11:57:49/

根据输入考虑建图,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/server/174616.html

相关文章

Express + MongoDB + multer 解决文件上传 originalname 中文乱码

出现originalname中文乱码&#xff0c;是因为请求时给后端的是 UTF-8 编码的文件名&#xff0c;而后端 Node.js 在解析文件名时&#xff0c;是以 ISO-8859-1 编码来解析的。 一、手动转换编码 在接收到文件后&#xff0c;对文件名进行编码转换。 1. 单文件 // multer配置 c…

深度解读:OpenAI发布GPT-5的技术突破与商业影响

引言 2025年2月&#xff0c;OpenAI正式发布GPT-5&#xff0c;这一被誉为“AI新纪元开篇之作”的模型&#xff0c;不仅实现了技术架构的颠覆性创新&#xff0c;更以免费开放策略引发行业地震。本文将从技术突破、商业影响、行业竞争格局及未来挑战四个维度&#xff0c;全面解析…

【DevOps】通过 Azure DevOps 部署启用私有端点的应用服务

推荐超级课程: 本地离线DeepSeek AI方案部署实战教程【完全版】Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速入门实战目录 **实验**测试 1:使用 Microsoft 托管代理部署测试 2:在 Linux VM (Ubuntu 20.04) 上使用自托管代理部署有一种常见的场景是,客户希…

火语言RPA--PDF页数统计

【组件功能】&#xff1a;统计PDF文档总页数 配置预览 配置说明 PDF文件路径 支持T或# 默认FLOW输入项 待统计页数的PDF文件的完整路径。 PDF文件密码 支持T或# 打开PDF文件的密码。 示例 PDF页数统计示例 描述 统计pdf文档E:\test\test.pdf有多少页。 配置 输出结果…

UE5.5 Niagara初始化粒子模块

粒子生成模块列表是每个创建的粒子都会调用一次对应的模块。此阶段中的模块设置每个粒子的初始值。粒子将从上到下的顺序执行模块。 下面&#xff0c;将列一下粒子生成常用的模块。 Initialize Particle 初始化粒子 所有粒子必需的基础模块&#xff0c;用于初始化粒子的基本属…

控制系统分类

文章目录 定义与特点1. 自治系统&#xff08;Autonomous System&#xff09;与非自治系统&#xff08;Non-Autonomous System&#xff09;自治系统非自治系统 2. 线性系统&#xff08;Linear System&#xff09;与非线性系统&#xff08;Nonlinear System&#xff09;线性系统非…

Mac本地安装运行FastDFS

没错&#xff0c;因为毕设...... 服务器过期了&#xff0c;只能装在本地了...... 1.配置 macOS 上需要安装以下依赖&#xff1a; Homebrew&#xff08;macOS 包管理器&#xff09; gcc&#xff08;编译器&#xff09; libevent&#xff08;FastDFS 依赖&#xff09; 安装…

java虚拟机(JVM)以及各种参数详解

Java 虚拟机&#xff08;JVM&#xff09;提供了许多参数来调整其行为和性能&#xff0c;以便更好地适应不同的应用场景。理解和使用这些参数对于优化 Java 应用程序的性能非常重要。以下是一些常用的 JVM 参数及其详细说明&#xff1a; 1. 内存管理参数 -Xms<size>&…