2023首届大学生算法大赛 - 村庄

article/2025/8/4 10:21:55

 


读题可以发现,如果两个村庄不能互相连通,那就算作一对 (a<b)。

显然是可以用floyd全局多源最短路来做的,如果不存在最短路,那么就是不能互通,但是这道题的数据范围N<=10^5,跑floyd复杂度为O(n^3)即10^15远大于10^8,显然是不行,复杂度级别只能是O(n),线性的,或者O(nlogn)。

看一下样例说明

显然如果两个村庄位于同一个连通块中,必然找不出(a<b),如果不在同一个连通块中,必然会产生(a<b),且数量刚好是第一个连通块的村庄数量 乘以 第二个连通块的数量。

为什么?

假设下图,1和2相连,3和4相连。

 明显可以发现1与3,4,都不相连,产生了第二个连通块村庄数量的(a<b)

2与3,4,也不相连,即为2*2=4。

所以直接使用并查集:【模板】并查集 - 洛谷

初始给每个村庄都分配一个连通块,如果有桥相连,就把它们加入同一个连通块。

因为会摧毁编号为1~k的桥,所以输入的时候只需要i>k的部分,不需要合并被摧毁的部分。

 

细节(以样例说明):第四座桥把4接到了连通块1上,第五座桥把1接到了连通块3上,这里就出现了一个问题,4并没有被更新,所以最后还要再跑一遍find,更新所有情况。(本蒟蒻考试的时候熬夜昏迷了,没想到这一点)

应该能AC的代码

#include <bits/stdc++.h>
#define int long long
using namespace std;int n,m,k,u,v,f[100001],cnt,ans;
bitset<100001>vis;
int a[100001];//连通块编号,其中村庄数量
vector<int>a_;
//定义f[i]=j为:i村庄在连通块j中
int find(int x){if(f[x]==x)return x;else return f[x]= find(f[x]);
}
void unit(int x,int y){x= find(x),y= find(y);f[x]=y;
}signed main(){ios::sync_with_stdio(false);cin.tie(nullptr),cout.tie(nullptr);cin>>n>>m>>k;for(int i=1;i<=n;++i)//初始化每个村庄的连通块f[i]=i;for(int i=1;i<=m;++i){cin>>u>>v;if(i>k){//1~k的桥全部被摧毁,只需要i>k的桥unit(u,v);}}for(int i=1;i<=n;++i)//跑一遍find,更新最终情况find(i);for(int i=1;i<=n;++i){//累计连通块编号a[f[i]]++;}for(int i=1;i<=n;++i)//把累计完的连通块全部拿出来if(a[i])a_.push_back(a[i]);for(int i=0;i<a_.size();++i)//配对连通块,累计答案for(int j=i+1;j<a_.size();++j)ans+=a_[i]*a_[j];cout<<ans;return 0;
}

如果有错误或者有更好的思路,欢迎评论!

看看算法大赛还会不会开放OJ让我们再次测试。

同时预祝各位在2023/4/8的蓝桥杯省赛中while(true)rp++

别熬夜 : )

 


http://chatgpt.dhexx.cn/article/6xDKJNvn.shtml

相关文章

算法“视”界杯上演十强争锋,大赛终极一战圆满落幕

​8月16日&#xff0c;2021腾讯广告算法大赛“决赛十强答辩&获奖名单公布”于线上顺利举行&#xff0c;本场直播共有9600余位技术同学在“腾讯广告视频号、腾讯营销学院、腾讯视频、腾讯优图、腾讯云AI和云社区”六大平台同步观看&#xff0c;这场精彩纷呈的算法竞技圆满落…

算法顶级比赛汇总

可参赛的算法比赛 阿里云天池大数据竞赛 时间&#xff1a;每年各个季度很多类型都会出题&#xff08;比赛总时间大概为两个月&#xff09; 内容&#xff1a;各个类型的算法题都会出、奖金上万不等 形式&#xff1a;在线提交&#xff08;提交后在线检查结果&#xff09;、离线…

URL与域名的含义

1、URL的含义和格式 用户使用浏览器访问网站时&#xff0c;需要在浏览器的地址栏中输入网址&#xff08;网站地址&#xff09;&#xff0c;这个网址就是URL&#xff08;Uniform Resource Locator&#xff0c;统一资源定位符&#xff09;。URL信息会通过HTTP请求发送给服务器&a…

如何在phpstudy设置多站点和二级域名

相信很多新手站长都使用过phpstudy来建立自己的站点吧&#xff0c;很多新手站长可能都习惯于直接将源码复制到根目录下&#xff0c;直接使用IP地址&#xff1a;127.0.0.1进行访问吧。可能很多人也发现了一些问题&#xff0c;就是自己在建立多个站点或者二级域名的时候会发现文件…

企业邮箱和邮箱域名是什么意思?它们有什么区别?

单说域名和邮箱很多人都知道其中的意思&#xff0c;那么合在一起的邮箱域名是什么意思呢?企业邮箱域名要怎么选呢?多人听说企业邮箱或者是域名邮箱这两个词&#xff0c;但是他们所代表的意思和区别却并不了解。 1、企业邮箱和邮箱域名是什么意思? 企业邮箱指的是以特定域名…

域名是如何变成IP的

本教程是博主个人心血&#xff0c;禁止转载&#xff01;&#xff01; 01_一次Http请求都干了啥 问题引入 我们上篇博客做了一个Http请求的抓包&#xff0c;里面只是介绍了抓到的大概有哪些内容。 好了&#xff0c;先做一个回顾。 上次我们说道&#xff1a;一次http请求分为三…

企微配置可信域名

1、企微配置可信域名 2、企微获取成员userID 3、企微获取用户敏感数据 4、企微配置回调服务 文章目录 一、简介1、官方文档介绍2、可信域名入口3、企微校验原理 二、前端校验三、后端服务校验1、原理2、获取校验文件内容。3、编写后端接口4、部署到服务器5、配置域名解析到服务…

注册域名时如何填写域名信息

目前国内域名注册规则越来越详细&#xff0c;要求也越来越严格&#xff0c;所以说大家在国内注册域名时一定要如实填写&#xff0c;这样才能正常使用。下面总结一些域名注册的要求和经验&#xff0c;帮助大家正确注册域名。 一、注册域名时乱写信息可以吗&#xff1f; 注册域…

微信的服务器域名地址,微信服务器域名设置

senparclsx 15 个回复 • 查看 447 次 • 53天前 sy87468118 14 个回复 • 查看 354 次 • 100天前 magiboy 13 个回复 • 查看 711 次 • 111天前 yintingji 12 个回复 • 查看 664 次 • 121天前 LXL.WxDeveloper 11 个回复 • 查看 329 次 • 73天前 zxz524 9 个回复 • 查看…

什么是论坛域名?论坛域名适用在哪些地方?

论坛域名是什么样的?论坛域名好不好?论坛域名适用在哪些地方?大家都知道论坛是发帖回帖讨论的平台&#xff0c;是Internet上的一种电子信息服务系统。每个用户都可以在上面书写&#xff0c;可发布信息或提出看法。下面我们就来看看论坛域名的介绍吧! 1、什么是论坛域名? …

碳中和城市建筑能源系统(3):负荷篇(龙惟定)2022

碳中和城市建筑能源系统(3):负荷篇 摘要 本文是碳中和城市建筑能源系统系列文章的第三篇。碳中和城市能源系统要实现“两个替代”&#xff0c;即能源生产的可再生能源替代和能源消费的电力替代。因此有&#xff12;个关键点对负荷分析提出了要求&#xff1a;一是建筑电气化&a…

阿里毕玄:智能时代,运维工程师在谈什么?

导读&#xff1a;智能化运维的终极目标&#xff0c;就是将运维人员从繁琐的工作中解放出来&#xff0c;提高整体运维效率&#xff0c;降低运维成本&#xff0c;实现业务系统的高可用性。 目前业界真正的智能化运维的落地实践其实并不多&#xff0c;大多还是停留在自动化甚至人工…

智能时代,运维工程师该谈什么?

智能时代&#xff0c;运维工程师该谈什么&#xff1f; 原创 2017-10-31 毕玄 高效开发运维 作者&#xff5c;毕玄 编辑&#xff5c;谢然 每家公司对于所谓运维团队到底应该做些什么&#xff0c;都有各自的看法。本文首先由阿里巴巴的运维团队在整个阿里巴巴的业务里承担的责任为…

阿里巴巴毕玄解密AIOps:一文读懂阿里巴巴运维体系的前世今生

【编者按】林昊(毕玄)&#xff0c;阿里巴巴研发效能事业部负责人。2007年加入阿里&#xff0c;10年间打造了阿里目前使用最为广泛的核心中间件之一的服务框架&#xff1b;建设了阿里的HBase团队&#xff0c;发展到今天HBase已经是阿里最重要的NoSQL产品&#xff1b;打造阿里基于…

区块链成熟度评测报告(3)——可靠性、易用性、可扩展性对比

可靠性对比 区块链的可靠性主要考察区块链网络、共享帐本、账户体系三个方面。 (一)区块链网络:商业区块链A、商业区块链B、Fabric均网络可靠 区块链网络主要测试三个指标:记账节点高可用、服务节点之间高可用、区块链网络的网络抖动是否影响系统服务等级。第一、二个指…

关于前后端接口的可扩展性思考

在写iOS和Android客户端程序&#xff0c;尤其是涉及到和后端对接口的时候&#xff0c;大家通常会针对下面三个问题引发一些争论&#xff1a; 不能写死容错能力过度设计 之所以会争论&#xff0c;是因为这三点很多时候是对的&#xff0c;但是如果不分情况和场合的应用就会出现一…

区块链的可扩展性问题及解决方案对比

区块链的性能问题 VISA是目前世界上广泛使用的信用卡品牌&#xff0c;区块链要达到实用水平&#xff0c;性能上至少需要能跟VISA之类的支付系统作比较。根据VISA在2015年的记录&#xff0c;全年共产生92,064百万笔支付交易&#xff0c;平均2920tps&#xff0c;按平均每笔交易5…

#私藏项目实操分享# 提高区块链的可扩展性并不需要牺牲安全和去中心化

可扩展性难题&#xff1f;区块链不可能三角&#xff1f;这篇论文可能有解决之道 背景 “The block chain scalability trilemma”(可扩展性难题)-是由以太坊创始人Vitalik Buterin创造的词语&#xff0c;国内亦被翻译为“区块链不可能三角”问题、“三元悖论”&#xff0c;是指…

【软件质量】软件可扩展性

文章目录 软件可扩展性纵向扩展横向扩展软件可演化性软件可扩展性 可扩展性是当系统的应用领域和设计的特征在操作范围内发生变化时,系统将质量目标满足其利益相关者可接受的水平的能力。在考虑计算机系统的可扩展性时,不仅要考虑软件,还要考虑它在上运行的基础设施(硬件)。…

面试问题:如何实现软件可扩展性

网站的可扩展性架构设计&#xff0c;能够在对现有系统影响最小的情况下&#xff0c;系统功能可以可持续扩展及提升的能力。 在此&#xff0c;对容易混为一谈的 “扩展性” 和 “伸缩性” 的概念进行详细说明&#xff1a; 扩展性 表现为&#xff1a;基础设施不需要经常变更&a…