POJ3037 + HDU-6714

两道最短路好题

POJ3037

手玩一下 发现每一点的速度可以直接搞出来,就是pow(2,h[1][1]-h[i][j])*V

那么从这个点出发到达别的点的耗费的时间都是上面这个数的倒数,然后直接跑最短路就好了

#include<iostream>
#include<vector>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<queue>
using namespace std;

const int N = 1e5+10;
const int inf = 0x3f3f3f3f;
const int mod = 1e9+7;
int gcd(int a,int b){return b?a:gcd(b,a%b);}
int lcm(int a,int b){return a*b/gcd(a,b);}
int qmi(int a,int b,int mod){int res=1;while(b){if(b&1)res=res*a%mod;b>>=1;a=a*a%mod;}return res;}


int n,q,m,v;
bool vis[1010][1010];
// int e[N],ne[N],w[N],h[N],idx;
// void add(int a,int b,int c){
	// e[idx] = b,ne[idx] = h[a],w[idx] = c,h[a] = idx++;
// }

double vs[1010][1010];
double dist[1010][1010];
double h[1010][1010];



void solve()
{
	cin>>v>>n>>m;
	
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			double x;cin>>x;
			h[i][j] = x;
			vs[i][j] = pow(2,x-h[1][1])/v; 
			dist[i][j] = 1e15;
		}
	}
	
	dist[1][1] = 0;
	queue<pair<int,int>>q;
	q.push(make_pair(1,1));
	int dx[] = {0,0,1,-1};
	int dy[] = {1,-1,0,0};
	vis[1][1] = true;
	
	while(q.size()){
		pair<int,int> t = q.front();
		q.pop();
		int x = t.first,y = t.second;
		vis[x][y] = false;
		//cout<<x<<" "<<y<<"\n";
		
		for(int i=0;i<4;i++){
			int temx = x+dx[i],temy = y+dy[i];
			if(temx<1||temx>n||temy<1||temy>m)continue;
			//cout<<temx<<" "<<temy<<"\n";
			if(dist[temx][temy]>dist[x][y]+vs[x][y]){
				dist[temx][temy] = dist[x][y]+vs[x][y];
				if(!vis[temx][temy]){
					vis[temx][temy] = true;
					q.push(make_pair(temx,temy));
				}
			}
		}
		
	}
	
	printf("%.2lf",dist[n][m]);
	
	

}

signed main()
{
	//ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	int _;
	//cin>>_;
	_ = 1;
	while(_--)solve();
	return 0;
}

HDU6714

这个dijk记数还是很有意思的,你得明白folyd的含义但是别被DP的含义绕进去

每次暴力的跑每一个点的单源最短路,然后当有中间点的时候你就更新一下就行了,没有中间的时候D【i】【j】就是一开始的距离,没有被更新,还是很有趣的,还是得想明白floyd的具体过程(好像不懂也行

一开始我就被绕进去了,一直在扣floyd 的含义来写这道,发现直接按上面的做法就好了

#include<bits/stdc++.h>
using namespace std;
using ll = long long;
#define int long long
using pii = pair<int,int>;
const int N = 1e4+10;
const int inf = 0x3f3f3f3f;
const int mod = 998244353;
int gcd(int a,int b){return b?a:gcd(b,a%b);}
int lcm(int a,int b){return a*b/gcd(a,b);}
int qmi(int a,int b,int mod){int res=1;while(b){if(b&1)res=res*a%mod;b>>=1;a=a*a%mod;}return res;}


int n,q,m;
int id[N];
int e[N],ne[N],w[N],h[N],idx;
void add(int a,int b,int c){
	e[idx] = b,ne[idx] = h[a],w[idx] = c,h[a] = idx++;
}

bool vis[N];
ll dist[N];



void dijkstra(int mid)
{
	memset(dist,0x3f,sizeof dist);
	memset(vis,0,sizeof vis);
	memset(id,0,sizeof id);
	priority_queue<pii,vector<pii>,greater<pii>>heap;
	heap.push({0,mid});
	dist[mid] = 0;
	
	
	while(heap.size()){
		auto t = heap.top();
		heap.pop();
		int ver = t.second;
		
		if(vis[ver])continue;
		vis[ver] = true;
		//cout<<ver<<"\n";
		
		for(int i=h[ver];~i;i=ne[i]){
			int j = e[i];
			if(dist[j]>dist[ver]+w[i]){
				dist[j] = dist[ver]+w[i];
				heap.push({dist[j],j});
				if(ver==mid)continue;
				id[j] = max(id[ver],ver);
				
			}else if(dist[j]==dist[ver]+w[i]){
				id[j] = min(id[j],max(id[ver],ver));
			}
		}
		
	}
}


void solve()
{
	cin>>n>>m;
	memset(h,-1,sizeof h);
	idx = 0;
	while(m--){
		int a,b,c;cin>>a>>b>>c;
		add(a,b,c),add(b,a,c);
	}
	
	int ans = 0;
	for(int i=1;i<=n;i++){
		dijkstra(i);
		for(int j=1;j<=n;j++)ans = (id[j]+ans)%mod;
		//cout<<"\n";
	
	}
	
	cout<<ans;

}

signed main()
{
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	int _;
	cin>>_;
	//_ = 1;
	while(_--)solve();
	return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

BeanPostProcessors是什么以及如何使用?

目录 一、BeanPostProcessors是什么&#xff1f;二、如何使用 BeanPostProcessor1、实现 BeanPostProcessor 接口2、注册 BeanPostProcessor3、示例代码 三、使用场景四、注意事项 一、BeanPostProcessors是什么&#xff1f; BeanPostProcessor 是 Spring 框架提供的一个扩展点…

Java多线程实战-从零手搓一个简易线程池(一)定义任务等待队列

&#x1f3f7;️个人主页&#xff1a;牵着猫散步的鼠鼠 &#x1f3f7;️系列专栏&#xff1a;Java全栈-专栏 &#x1f3f7;️本系列源码仓库&#xff1a;多线程并发编程学习的多个代码片段(github) &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正…

每日一题——LeetCode1748.唯一元素的和

方法一 两次遍历 var sumOfUnique function(nums) {let map new Map()for(let num of nums){map.set(num,map.has(num)?map.get(num)1:1)}let res0for(let num of nums){if(map.get(num)1) resnum}return res }; 消耗时间和内存情况&#xff1a; 方法二 一次遍历 var su…

新书速递——《可解释AI实战(PyTorch版)》

本书旨在帮助你实施最新的可解释AI技术&#xff0c;以构建公平且可解释的AI系统。可解释AI是当今AI研究中的热门话题&#xff0c;但只有少数资源和指南涵盖了所有重要技术&#xff0c;这些技术对实践者来说非常有价值。本书旨在填补这一空白。 本书读者对象 本书既适合那些有兴…

揭秘神秘商业模式:看似赔钱的买卖,如何月赚600万?

你是否曾被一个看似赔钱的买卖所吸引&#xff0c;最终却惊喜地发现它一个月竟然能赚600多万&#xff1f;这样的数字&#xff0c;是否让你感到意外又好奇&#xff1f;如果你仔细品味我们今天的内容&#xff0c;我相信&#xff0c;你也能开启属于自己的赚钱之路。 他们是如何实现…

自学编程的六种方法,你必须知道

随着互联网日趋迅猛&#xff0c;编程已经在我们生活当中无处不在了。众所周知&#xff0c;程序员的工资都很不错&#xff0c;于是越来越多的人&#xff0c;都想加入到编程的行业中来。那么如何加入到程序员的行业当中&#xff1f; PHP从入门到放弃&#xff0c;C语言从入门到放…

【CSDN活动】程序员职业生涯的分水岭:年龄还是经验?

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 程序员职业生涯的分水岭&#xff1a;年龄还是经验&#xff1f;引言技术更新换代…

基于nodejs+vue在线学籍管理系统python-flask-django-php

系统开发主要在 Windows 系统下进行&#xff0c;采用支持跨平台的nodejs语言开发完成&#xff0c;因此可以运行在任意开发环境下。系统采用mysql数据库的方式&#xff0c;按照express框架进行开发。 前端技术&#xff1a;nodejsvueelementui, Express 框架于Node运行环境的Web框…

windows10彻底关闭Windows Defender的4种方法

Windows Defender是windows10系统自带的杀毒软件。默认情况下它处于打开的状态。大多数第三方的杀毒软件都可以识别&#xff0c;并代替它。 但是大多数情况下&#xff0c;我们总是有各种理由需要关闭它&#xff0c;例如 Windows Defender 导致资源使用率高或系统出现其他问题&…

蓝桥杯小白月赛3.23

题目描述&#xff1a; AC代码&#xff1a; #include <iostream> #include<cstring> #include<algorithm>using namespace std;const int N 2e510; string str[N]; //写上&会速度更快一些 bool cmp(const string &s1,const string &s2) {//例…

HTML5+CSS3+JS小实例:原生JS实现全屏滚动

实例:原生JS实现全屏滚动 技术栈:HTML+CSS+JS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial…

【JVM】JVM简介

文章目录 &#x1f334;简介&#x1f332;JVM发展史&#x1f338;Sun Classic VM&#x1f338;Exact VM&#x1f338;HotSpot VM&#x1f338;JRockit&#x1f338;J9 JVMTaobao JVM&#xff08;国产研发&#xff09; &#x1f333;JVM 运行流程⭕总结 &#x1f334;简介 JVM …

win10 禁止谷歌浏览器自动更新(操作贼简单)

禁止谷歌浏览器自动更新 &#xff08;1&#xff09;修改 "C:\Windows\System32\drivers\etc\hosts 文件&#xff0c;在最后增加 127.0.0.1 update.googleapis.com&#xff08;2&#xff09;保存后&#xff0c;winr 快捷键&#xff0c;输入cmd &#xff0c;打开命令行 &am…

学习笔记:MYSQL数据库基础知识

MYSQL数据库基础知识学习笔记 MYSQL基础学习数据库相关概念现主流数据库排名数据模型SQL分类SQL数据库基础操作 2024/3/27 学习资料&#xff1a;黑马程序员:MYSQL MYSQL基础学习 数据库和数据库管理系统(DBMS) 数据库: 是存储数据的集合&#xff0c;包括表、视图、索引等对象…

华为数通方向HCIP-DataCom H12-821题库(多选题:201-220)

第201题 以下关于BGP中Orginator ID属性的描述,正确的是哪些项? A、Originator ID属于公认任意属性 B、当其他BGP Speaker接收到这条路由的时候,将比较收到的0nginator ID和本地的Router ID,如果两个ID相同BGP Speaker会忽略掉这条路由,不做处理 C、当一条路由第一次被RR…

Android客户端自动化UI自动化airtest从0到1搭建macos+demo演示

iOS客户端自动化UI自动化airtest从0到1搭建macosdemo演示-CSDN博客 一、基础环境 1. 安装jdk 选择jdk8 如果下载高版本 可能不匹配会失败 下载.dmg文件 苹果电脑 &#xff5c; macOS &#xff5c; jdk1.8 &#xff5c; 环境变量配置_jdk1.8 mac-CSDN博客 Java Downloads …

STM32学习笔记(6_6)- TIM定时器的输入捕获模式测频率和PWMI模式测频率占空比代码

无人问津也好&#xff0c;技不如人也罢&#xff0c;都应静下心来&#xff0c;去做该做的事。 最近在学STM32&#xff0c;所以也开贴记录一下主要内容&#xff0c;省的过目即忘。视频教程为江科大&#xff08;改名江协科技&#xff09;&#xff0c;网站jiangxiekeji.com 现在开…

狄仁杰审判周二杀妻案,这种推理办案效果果然神奇!

狄仁杰审判周二杀妻案&#xff0c;这种推理办案效果果然神奇&#xff01; 江西彭泽县小南村&#xff0c;是一个只有几十户人家的小山村&#xff0c;背靠大山&#xff0c;面对腾水。在一户人家门前&#xff0c;站满了衙役捕快和看热闹的村民。 这家的男主人叫周二。狄仁杰走进…

通过KVM虚拟机部署磐维2.0数据库

一、安装KVM环境 1.1查看cpu是否支持虚拟化 Bash 服务安装查看机器是否支持虚拟化# cat /proc/cpuinfo | egrep vmx|svm flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe sys…

苹果 WWDC 24 将举行;高通、谷歌、英特尔等联合开发 AI 软件;艺术家谈及使用 Sora 创作视频体验

▶ 苹果WWDC 24 将于当地时间 6 月 10 日召开 3 月 27 日凌晨&#xff0c;苹果官宣将于当地时间 6 月 10 日举行今年的全球开发者发布大会。 苹果全球营销高级副总裁 Greg Joswiak 在社交媒体上表示&#xff1a;「在您的日历标记上 WWDC24 吧。这场活动无疑会令人惊喜&#xf…