Codeforces Round 507(div. 1) C(分类讨论,并查集)

news2024/11/18 10:47:01

题目链接:

Problem - C - Codeforcesicon-default.png?t=MBR7https://codeforces.com/contest/1039/problem/C

题意:

计算机网络由n个服务器组成,每个服务器有0~2^{k}-1范围内的加密秘钥。设c[i]是分配给第i台服务器的加密密钥。m对服务器通过数据通信通道直接连接。由于加密算法的特殊性,只有它连接的两台服务器具有不同的加密秘钥时,数据通信通道才能被认为是安全的。一种包含未知数字y的病毒在传播,当它感染i服务器时,加密密钥会从c[i]变成c[i]\oplus y(\oplus为异或)。

找到\left ( A,y \right )的对数,其中A是服务器集合的某个(可能是空的)子集,y0~2^{k}-1范围内的某个数字,这样当所选子集A中的所有服务器和其他服务器都没有被包含数字的病毒感染时,所有数据通信通道都保持安全。答案可能相当大,将结果mod1e9+7

分析:

这题面很长,需要转译,问题可以转为:问有多少pair<set<int> S,y>,使得当所有A中的权值都变为c[i]\oplus y(\oplus为异或操作),仍然保证m条边都是安全的。  

分类讨论:A

考虑一条边的两个端点A,B,它们两点对应的权值为a,b,因为a\neq ba\oplus y\neq b\oplus y,即对于某条边,病毒同时感染或者同时不感染这条边是没事的。

而当且仅当y=a\oplus b时,感染一个点会出现不合法的情况。

于是可以对每条边设置一个权值a\oplus b。若某个病毒的权值为a_{i}\oplus b_{i},那么合法感染点有n-形成的连通块的个数。

没出现的,合法感染点有2^{n}种方案。

对连通块的解释:

无其他限制时,对于任意的yset\left \langle int \right \rangle A的个数都是2^{n},考虑一条边\left ( u,v \right ),若y=c[u]\oplus c[v],那么uv就会被绑定,从而形成连通块,这两个点要不然都在集合A中,要不然都不在集合A中。对每一个这样的y,我们能将uv连边,用并查集求出连通块的个数。设连通块个数为cnt,对于这个y,对应的set\left \langle int \right \rangle A的个数为2^{cnt}个,且任意2^{cnt}\leq m。对相同m进行分解,答案是

 

 成立的个数如何计算?代码有注释。

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
#define fi first
#define se second
constexpr LL mod=1e9+7;
constexpr int N=5e5+30;
LL c[N];
LL fa[N];
LL n,m,k,cnt,num,ans;
set<LL> s;
void YES(){
	cout<<"YES"<<"\n";
}
void NO(){
	cout<<"NO"<<"\n";
}
struct Edge{
	LL u,v,w;
}e[N];
bool cmp(Edge xx,Edge yy){
	return xx.w<yy.w;
}
LL Find(LL x){
	return x==fa[x]?x:fa[x]=Find(fa[x]);
}
LL qpow(LL x,LL y){return y?(y&1?x*qpow(x,y-1)%mod:qpow(x*x%mod,y/2)):1;}
void add(LL u,LL v){
	s.insert(u);
	s.insert(v);
	if(Find(u)!=Find(v))	fa[Find(u)]=Find(v),cnt--;
	return ;
}
void work(){
	cin>>n>>m>>k;
	for(LL i=1;i<=n;++i)	cin>>c[i];
	for(LL i=1;i<=n;++i)	fa[i]=i;
	for(LL i=1;i<=m;++i){
		cin>>e[i].u>>e[i].v;
		e[i].w=c[e[i].u]^c[e[i].v];
	}
	sort(e+1,e+m+1,cmp);
	for(LL i=1;i<=m;){
		LL j=i;
		cnt=n;
		for(auto x:s)	fa[x]=x;s.clear();
		while(j<=m&&e[j].w==e[i].w){
			add(e[j].u,e[j].v);
			j++;
		}
		i=j;
		num++;//num即为成立个数
		ans+=qpow(2,cnt);
		ans%=mod;
	}
	cout<<1ll*((ans+(qpow(2,k)+mod-num)*qpow(2,n)%mod)%mod)<<"\n";
	return ;
}
int main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	cout.tie(nullptr);
	work();
	return 0;
}

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

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

相关文章

高性能分布式缓存Redis-第二篇章

高性能分布式缓存Redis-第二篇章一、持久化原理1.1、持久化流程&#xff08;落盘&#xff09;1.2、RDB详解1.2.1、介绍1.2.2、触发&原理1.2.3、实现1.2.4、RDB总结1.3、AOF详解1.3.1、概念1.3.2、AOF 持久化的实现1.3.2、开启1.3.4、命令追加1.3.5、文件写入和同步&#xf…

SQL 别名

通过使用 SQL&#xff0c;可以为表名称或列名称指定别名。 SQL 别名 通过使用 SQL&#xff0c;可以为表名称或列名称指定别名。 基本上&#xff0c;创建别名是为了让列名称的可读性更强。 列的 SQL 别名语法 SELECT column_name AS alias_name FROM table_name; 表的 SQL …

dubbo学习笔记4(小d课堂)

dubbo高级特性 服务分组及其配置 我们再来创建一个实现类&#xff1a; 接下来我们在xml中去进行配置&#xff1a; 现在我们去运行看是否会有错误呢&#xff1f; 我们有两个服务实现类&#xff0c;那运行的时候到底执行哪个呢&#xff1f; 但是我们想的是可以指定执行哪个实现…

设计模式——访问者模式

访问者模式一、基本思想二、结构图一、基本思想 将作用于某种数据结构中的各元素的操作分离出来封装成独立的类&#xff0c;使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作&#xff0c;为数据结构中的每个元素提供多种访问方式。它将对数据的操作与数据结构进…

【安全硬件】Chap.7 对实体芯片采取物理手段破解;芯片IC逆向工程和拆分制造;物理上对芯片的攻击分类;侧信道攻击;Kocher针对RSA的计时攻击

【安全硬件】Chap.7 对实体芯片采取物理手段破解&#xff1b;芯片IC逆向工程和拆分制造&#xff1b;物理上对芯片的攻击分类&#xff1b;侧信道攻击&#xff1b;Kocher针对RSA的计时攻击前言1. 逆向工程Reverse Engineering逆向工程识别芯片上2输入NAND门逆向工程技术Decapulat…

CSS 实例系列

Hello 小伙伴们早上、中午、下午、晚上和深夜好&#xff0c;这里是 jsliang~本 CSS 系列文章&#xff1a;主推学以致用。结合面试题和工作实例&#xff0c;让小伙伴们深入体验 61 个工作常见的 CSS 属性和各种 CSS 知识。主推纯 CSS。尽可能使用 HTML CSS 完成学习目的&#x…

nohup命令详解

nohup命令详解一、背景说明&#xff1a;启动服务的时候&#xff0c;如果使用如下命令&#xff0c;则会在start.sh脚本所在的目录下&#xff0c;产生一个名为 nohup.out 的输出文件nohup ./startup.sh &可以看到下面这个例子&#xff0c;一开始当前目录是没有nohup.out文件的…

RocketMQ 多语言 SDK 开源贡献召集令

作者&#xff1a;艾阳坤 目前 Apache RocketMQ 5.0 SDK [ 1] 正在社区开源&#xff0c;开发与迭代也在火热进行中&#xff0c;欢迎广大社区的朋友们能够参与其中。我们欢迎任何形式的贡献&#xff0c;包括但不限于新 feature、bugfix、代码优化、生态集成、测试工作、文档撰写…

我与 CSDN 的 2022 年终总结

&#x1f482; 个人网站:【海拥】【摸鱼游戏】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 想寻找共同学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 转眼间2023年已经过去…

《后端技术面试 38 讲》学习笔记 Day 02

《后端技术面试 38 讲》学习笔记 Day 02 08丨软件设计的方法论&#xff1a;软件为什么要建模&#xff1f; 原文摘抄 所谓软件建模&#xff0c;就是为要开发的软件建造模型。模型是对客观存在的抽象&#xff0c;我们常说的数学建模&#xff0c;就是用数学公式作为模型&#xf…

flask + Pandas + echarts 使用饼状图等将二手房数据进行分析+可视化

目录 一、实战场景 二、知识点 python 基础语法 python 文件读写 pandas 数据处理 flask web 框架 echarts 图表 bootstrap jinja 模版 三、菜鸟实战 初始化 Flask 框架&#xff0c;设置路由 各行政区房屋数量柱状图分析 区域二手房房源朝向分布情况 二手房单价最…

Higress Kruise Rollout: 渐进式交付为应用发布保驾护航

作者&#xff1a;扬少 前言 在业务高速发展过程中&#xff0c;如何最大化保障功能迭代过程中业务流量无损一直是开发者比较关心的问题。通常在应用发布新功能阶段&#xff0c;我们会采用灰度发布的思想对新版本进行小流量验证&#xff0c;在符合预期之后再进行全量发布&#…

11、JS笔记-内置对象

1.内置对象 js中对象分为三种&#xff1a; 自定义对象、内置对象、浏览器对象&#xff08;js独有&#xff09; 内置对象&#xff1a; js语言自带的对象&#xff0c;供开发者使用&#xff0c;提供一些常用或基本的功能&#xff08;属性和方法&#xff09; 2.Math对象 Math中所…

【云原生】k8s配置资源管理

内容预知 1.Secret的资源配置 1.1 Secret配置的相关说明 1.2 陈述式创建Secret配置 1.3 声明式base64编码创建Secret 1.4 将secret以volume形式挂载到pod中 1.5 将Secret导入到pod中&#xff0c;充当环境变量 1.6 实战运用&#xff1a;使用secret配置免密交互拉取habor…

Qt之对话框

文章目录一、对话框的概念二、与QWidget的区别三、对话框2种显示方法四、对话框返回值的概念本节示例提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、对话框的概念 对话框是和用户简短交互的一种窗口。如&#xff1a;登录界面&#xff0c;关于界面…

知识付费图文音视频课程公众号系统开发

知识付费图文音视频课程公众号系统开发 功能特性;为你介绍音视频课程点播系统的功能特性。 微信H5;目前只支持微信公众号H5访问。 课程管理;后台可上传多个课程分类与课程。 名师推荐;后台可以维护教师列表&#xff0c;并推荐到首页显示。 分享海报;可以自定义多个分享海报。 …

Maven在项目里的具体使用方式,很简单

大家好&#xff0c;今天给大家分享一下Maven在项目里的*具体使用方式* 有关于maven这个东西&#xff0c;要知道&#xff0c;它的作用是帮助开发人员&#xff08;也就是我们&#xff09;批量的管理jar包 所谓对jar包批量管理&#xff0c;有一个很重要的点&#xff0c; 就是对于…

2022年CSDN年终总结:一个新晋研究生的遗憾与成长

目录0 遗憾1 顺利完成毕业设计2 转向垂类写作3 C站成长4 组织社区活动5 新年新flag0 遗憾 2022年有很多遗憾 其一&#xff0c;毕业的遗憾。3月疫情席卷上海&#xff0c;封校封寝、静态网格&#xff0c;每天从上床到下桌两点一线&#xff0c;5月窗口期身着防护服撤离上海&…

云原生|kubernetes|pod或容器的安全上下文配置解析

前言&#xff1a; 安全上下文&#xff08;Security Context&#xff09;定义 Pod 或 Container 的特权与访问控制设置。 安全上下文包括但不限于&#xff1a; 自主访问控制&#xff08;Discretionary Access Control&#xff09;&#xff1a; 基于用户 ID&#xff08;UID&…

【PAT甲级 - C++题解】1091 Acute Stroke

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 &#x1f4da;专栏地址&#xff1a;PAT题解集合 &#x1f4dd;原题地址&#xff1a;题目详情 - 1091 Acute Stroke (pintia.cn) &#x1f511;中文翻译&#xff1a;急性中风 &#x1f4e3;专栏…