首页 > 其他分享 >[传智杯 #2 决赛] 传送门

[传智杯 #2 决赛] 传送门

时间:2024-07-09 19:19:28浏览次数:8  
标签:决赛 传智杯 传送门 短路 int mp 教学楼 长度

https://www.luogu.com.cn/problem/P6464?contestId=180677
传智专修学院里有
n 栋教学楼,有 m 条双向通行道路连接这些教学楼,不存在重边和自环。每条道路都有一定的长度,而且所有教学楼之间都可以直接或者间接的通过道路到达。我们可以很容易的求出这些教学楼之间的最短路。
为了使交通更为顺畅,校方决定在两个教学楼里增设一对传送门。传送门可以将这对教学楼的距离直接缩短为 0。利用传送门,某些教学楼之间的最短路的距离就变短了。
由于预算有限,学校里只能安装一对传送门。但是校长希望尽可能方便学生,使任意两点之间的最短路长度的总和最小。当然啦,从 x 教学楼到 y 教学楼的长度和从 y 教学楼到 x 教学楼的长度只需要统计一次就可以了。
上述便是题目,简单来说就是学院有n个教学楼,教学楼上一共有m条通道这些通道可以互通,但是有一个传送门可以直接将这一栋的人传送到另一栋上面,传送的权值为0,求出有有传送门的情况下去完每栋楼最少要走的路是多少
由题意可知上述题目是使用floyd算法和枚举法来解决书取得该多元的最小值,我们假定一个坐标,我们在一号楼然后我们把传送门放在二号楼来算出此时的最短路,再将传送门放在三号楼算出最短路等一号楼的这种情况算完了我们再从二号楼开始
以此类推得出结论

点击查看代码
`#include<bits/stdc++.h>
using namespace std;
int to[100000],mp[5000][5000] //建立变量来进行存储;
int main() {
	int n, m, a, b, c;
	cin >> n >> m;
	for(int i = 1; i<= n; i++) {
		for(int j = 1;  j<= n; j++) {
			if(i==j)mp[i][j]=0;
			else mp[i][j]=1e8//进行初始化这样子才能使得接下来的想法中找到最小值;
            //否则默认mp为0会导致结果出现错误
		}
	}
	for(int i = 1; i <= m; i++) {
		cin >> a >> b >> c;
		if(mp[a][b] > c) {
			mp[a][b]=c;
			mp[b][a]=c;//因为是双向边所以都要进行记录
		}

	}
	for(int k = 1; k <= n; k++) {
		for(int i = 1;  i<= n; i++) {
			for(int j = 1;  j <= n; j++) {
				mp[i][j]=min(mp[i][j],mp[k][j]+mp[i][k]);//这个地方为正常的floyd算法题目所用的比这个稍微复杂一些 
			}
		}
	}
	long long t = 0,ans=INT_MAX;
	for(int men=1; men<n;men++) {//传送门所在的楼是哪栋
		for(int k = men+1; k <= n; k++) {//为什么要加一,假设men=k传送门无意义但这样子可以稍微减少时间复杂度
			t=0;
			for(int i = 1;  i< n; i++) {//开始遍历起点到哪个终点的路径
				for(int j = i+1;  j <= n; j++) {
					if(men!=i||j!=k)//出发点等于传送门的位置和跳跃点等于直接到的地方这样子无意义.
					t+=min(mp[i][j],min(mp[men][j]+mp[k][i],mp[men][i]+mp[k][j]));//开始比较将起点到跳跃点,跳跃点从传送门传过去和起点到传送门,传送门再到跳跃点的值再到我要的终点进行比较选出权值
                      //小的那一个并比较和直接过去的权值比
				}
			}
			ans=min(ans,t);//选出权值最小的那一个进行比较与记录
		}
	}
	cout <<ans<< endl;
	return 0;
}`

标签:决赛,传智杯,传送门,短路,int,mp,教学楼,长度
From: https://www.cnblogs.com/gqc4722/p/18292594

相关文章

  • [CISCN2019 总决赛 Day2 Web1]Easyweb
    进入题目查看源码发现id参数可用sql注入脚本目录扫描发现robots.txt尝试fuzz爆破参数发现image.php.bak可用<?phpinclude"config.php";$id=isset($_GET["id"])?$_GET["id"]:"1";$path=isset($_GET["path"])?$_GET["path"]:"&......
  • 职场<火焰杯>测试开发大赛决赛即将开始!
    亲爱的测试开发小伙伴们,令人期待的职场<火焰杯>测试开发大赛决赛即将拉开帷幕!不论你是否参加了初赛,现在都可以报名参与决赛,展示你的技术实力,争夺丰厚奖品与荣誉证书!01决赛时间决赛时间:2024年7月16日15:00-22:0002为什么不能错过这次决赛?丰厚奖品:总奖励价值高达10万元,等你......
  • P9384 [THUPC 2023 决赛] 着色
    P9384[THUPC2023决赛]着色思维题+构造三元环还可以,五元环有点抽象,考虑将其全归为奇环,那么题目就变成:求一种设边权的方案,使得只用边权\(i\)无法构成奇环。那么这个限制等价于只保留边权为\(i\)的边的图是二分图,那么一条边的两个端点得是不同属性。考虑怎么构造二分图,看......
  • 题目 3293: 蓝桥杯2024年第十五届决赛真题-数位翻转
    https://www.dotcpp.com/oj/problem3293.html 题目描述小明创造了一个函数f(x)用来翻转x的二进制的数位(无前导0)。比如f(11)=13,因为11=(1011)2,将其左右翻转后,变为13=(1101)2;再比如f(3)=3,f(0)=0,f(2)=f(4)=f(8)=1等等。小明随机出了一个长度为......
  • 北京理工大学第十七届程序设计竞赛决赛
    A.赛前须知输出ACACACACAC即可点击查看代码#include<bits/stdc++.h>usingnamespacestd;#definelllonglongintmain(){std::ios::sync_with_stdio(0);std::cin.tie(0);strings="ACACACACAC";for(inti=0;i<s.size();i++)cout<<......
  • 第十一届蓝桥杯大赛软件类决赛 Java A 组
    文章目录发现宝藏【考生须知】发现宝藏前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【宝藏入口】。第十一届蓝桥杯大赛软件类决赛JavaA组【考生须知】考试开始后,选手首先下载题目,并使用考场现场公布的解压密码......
  • 晋级决赛 | 璞华龙舟队:驰骋双湖展雄风,龙舟“浪”出新高度!
    “金荡杯”第三届江苏省传统龙舟邀请赛6月2日,“金荡杯”第三届江苏省传统龙舟邀请赛(鹅湖站)在风景如画的鹅湖畔火热开赛。碧波荡漾的湖面上,数条龙舟犹如一条条巨龙,蓄势待发,准备在比赛中一展风采。随着鼓声雷动,龙舟如箭在弦,竞相冲向终点,上演了一场场激动人心的水上竞技。“龙......
  • 第十一届蓝桥杯大赛软件类决赛 Java B 组
    文章目录发现宝藏【考生须知】试题A:美丽的2试题B:扩散试题C:阶乘约数试题D:本质上升序列试题E玩具蛇试题F蓝肽子序列试题G皮亚诺曲线距离试题H:画廊试题I:补给试题J质数行者发现宝藏前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍......
  • 2024铁三决赛专项题-zip_guessinteger
    2024铁三决赛专项题-zip_guessinteger简介:ZIP包竟然加密了,快上我的暴力破解工具。难道我需要一个量子算力吗?能否使点巧力猜猜?需要使用的工具:bkcrack工具地址:https://github.com/kimci86/bkcrack题目附件上玄机自取:https://xj.edisec.net1.第一层​echo-n'breakthr......
  • buuctf-pwn-[第五空间2019 决赛]PWN5-格式化字符串漏洞
    题目地址:https://buuoj.cn/challenges#[第五空间2019决赛]PWN5先检查一下保护情况再拖进ida里分析找到一个格式化字符串漏洞,那么我们可以利用这个漏洞去获取或者改写dword_804C044的值从而进入if语句中,拿到shell什么是格式化字符串漏洞所谓格式化字符串漏洞,就是我们能控......