Round #2022/12/10
问题 D:城市大脑
题目描述
杜老师正在编写杭州城市大脑智能引擎。杭州的道路可以被抽象成为一幅无向图。每条路的初始速度都是 \(1\ m/s\)。杜老师可以使用 \(1\) 块钱让任意一条路的速度提升 \(1\ m/s\)。如果一条路的速度为 \(a\ m/s\),那么我们需要 \(1/a\) \(s\)才能通过这条道路。初始杜老师有 k 块钱,杜老师要把这 k 块钱花在升级这些道路上。 现在有两位选手,一位要从 \(s_1\) 走到 \(t_1\),一位要从 \(s_2\) 走到 \(t_2\),请问杜老师要怎么花钱,使得两位选手花费的总时间最少?当杜老师花完钱之后,两位选手都会走花费时间最少的路。杜老师花在每条道路上的钱都必须是非负整数。
输入格式
第一行三个整数 \(n,m,k\) 分别表示点数、边数以及杜老师初始有多少钱。
接下来 \(m\) 行,每行两个正整数 a,b 表示边(可以有重边)。
接下来一行四个整数 \(s_1,t_1,s_2,t_2\)。数据保证 \(s_1,t_1\)、\(s_2,t_2\) 连通。
输出格式
一行一个数表示答案。相对误差或绝对误差在 \(10^{-9}\) 内即为正确。
样例输入#1
点击查看
6 5 1
1 2
3 2
2 4
4 5
4 6
1 5 3 6
样例输出#1
点击查看
5.000000000000
样例输入#2
点击查看
1 0 100
1 1 1 1
样例输出#2
点击查看
0.000000000000
样例输入#3
点击查看
4 2 3
1 2
3 4
1 2 3 4
样例输出#3
点击查看
0.833333333333
提示
对于 \(20\%\) 的数据,\(n,m \leq 10,k\leq 10\);
对于 \(50\%\) 的数据,\(n,m \leq 10^3,k\leq 10^9\)。
对于 \(100\%\) 的数据,\(n,m \leq 5 \cdot 10^3,k\leq 10^9\)。
题解
点击查看代码
#include<cstdio>
#include<vector>
#include<cstring>
#define forl(i,n) for(int i=1;i<=n;i++)
#define forr(i,n) for(int i=n;i>0;--i)
using namespace std;
inline void cmin(int &x,int y){if(x>y)x=y;return;}
inline int min(int x,int y){return x<y?x:y;}
const int N = 5009;
vector<int>v[N];
int n,m,k,a,b,s1,t1,s2,t2,h,t;
int que[N],value[N];
int dist[N][N];
void bfs(int id)
{
h=t=0;
que[++t]=id;
while(h<t)
{
++h;
int x=que[h],to;
forr(i,v[x].size()-1)
{
to=v[x][i];
if(dist[id][to]||to==id)continue;
dist[id][to]=dist[id][x]+1;
que[++t]=to;
}
}
}
int main()
{
scanf("%d%d%d",&n,&m,&k);
forl(i,m)
{
scanf("%d%d",&a,&b);
v[a].push_back(b);
v[b].push_back(a);
}
forl(i,n)bfs(i);
scanf("%d%d%d%d",&s1,&t1,&s2,&t2);
value[0]=dist[s1][t1]+dist[s2][t2];
forl(i,n)
{
forl(j,n)
{
if(i==j||!dist[i][j]||!dist[i][s1]||!dist[i][s2]||!dist[j][t1]||!dist[j][t2])continue;
cmin(value[dist[i][j]],dist[i][s1]+dist[i][s2]+dist[j][t1]+dist[j][t2]);
}
}
for(int i=0;i<=m;i++){
}
return 0;
}
Round #2022/12/10的更多相关文章
- ubuntu 12.10 sourcelist软件更新源列表(zz)
ubuntu 12.10正式版已经发布了,国内各大开源软件源也陆续更新了资源.今天分享一下ubuntu 12.10 软件更新源列表. 首先,备份一下ubuntu 12.04 原来的源地址列表文 ...
- 大型网站演化(转载 http://homeway.me/2014/12/10/think-about-distributed-clusters/)
0x01.大型网站演化 简单说,分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率. 集群主要分为:高可用集群(High Availability Clu ...
- Ubuntu 12.10 安装 jdk-7u10-linux-x64.tar.gz(转载)
在Ubuntu 12.10下安装 jdk-7u10-linux-x64.tar.gz 总的原则:将jdk-7u10-linux-x64.tar.gz压缩包解压至/usr/lib/jdk,设置jdk环境 ...
- 解决Ubuntu 12.10中ZIP文件名乱码的方法
转摘源地址:http://blog.csdn.net/jiangxinyu/article/details/8206395 安装(12.04及以上): 代码: sudo apt-get install ...
- ubuntu 12.10无法用apt-get安装软件 Err http://us.archive.ubuntu.com quantal-updates/main Sources 404 Not
之前执行apt-get 不管是什么软件或apt-get update都会遇到fail to fetch http://us.archive.ubuntu.com quantal-updates/ma ...
- ubuntu 12.10 软件更新源列表
ubuntu 12.10正式版已经发布了,国内各大开源软件源也陆续更新了资源.今天分享一下ubuntu 12.10 软件更新源列表. 首先,习惯性的备份一下ubuntu 12.04 原来的源地址列表文 ...
- Ubuntu 13.04/12.10安装Oracle 11gR2图文教程(转)
Ubuntu 13.04/12.10安装Oracle 11gR2图文教程 原文标题:How to Install Oracle 11G R2 Enterprise Edition Database U ...
- install the Mondo Rescue utility in Ubuntu 12.04 or 12.10.
1. Open a terminal window. 2. Type in the following commands, then hit Enter after each. wget ft ...
- Ubuntu 12.10 安装VirtualBox增强功能
原文链接:http://fengbaoxp.iteye.com/blog/1871825 Ubuntu 12.10 Desktop 首先,通过VirtualBox菜单(设备->安 ...
- Ubuntu 12.10安装QQ2012
[日期:2012-11-05] 在最新的Ubuntu 12.10下安装QQ2012,请根据自己的机器类型下载后按照下面的32位或64位安装说明安装. 下载网址:http://www.longene.o ...
随机推荐
- WebUi爬虫自动化测试 Selenium4.X+Java教程
为什么要学习Selenium 自动化测试 Selenium是最受欢迎的Web应用程序自动化测试工具之一. 通过学习Selenium,可以编写自动化测试脚本,用于自动执行各种任务,例如验证功能.测试用户 ...
- 解决方案 | 在 Tkinter 中导入 pywinauto/pyautogui 时窗口大小发生变化
上面问题也可以换一个说法,pywinauto/pyautogui 时改变了tkinter的原有的窗口大小.这个问题困扰了我好几天而且网上有这样的问题但是并没有答案,今天摸索出答案给大家分享下.解决方法 ...
- webgl(threejs)生成房间楼层
楔子 在很多数字孪生项目中,都会涉及到楼层的建模.楼层的建模由于结构繁多,如果都是建模师进行手动建模,工作量会比较大.而楼层本身的结构,可以抽象成可以通过路径构造的对象(这和之前的文章提及的的管路以及 ...
- 引入样式在Element UI (Vue 2)和Element Plus (Vue 3)中的不同
引入样式 Element UI (Vue 2): import 'element-ui/lib/theme-chalk/index.css'; Element Plus (Vue 3): im ...
- Stopwatch 类来测量时间间隔
使用 Stopwatch 类来测量时间间隔. 以下是一个示例代码,展示如何记录 Excel 导入的用时: ' 创建 Stopwatch 实例 Dim stopwatch As New Stopwatc ...
- oeasy教您玩转vim - 54 - # 匹配替换
查找细节 回忆上节课内容 我们学习了 替换 substitude 替换单行 :s/shiyanlou/oeasy 加上range :3,5s/shiyanlou/oeasy :%s/shiyanl ...
- 浅谈:HTTP 和 HTTPS 通信原理
1.HTTP基本概念 1.1 HTTP是什么? HTTP (超文本传输协议)协议被用于在 Web 浏览器和网站服务器之间传递信息, HTTP 协议以明文方式发送内容,不提供任何方式的数据加密,如果攻 ...
- 【Scala】04 对象特性Part1
1.声明式包管理: 一个Scala文件可以声明N个包 包的意义和Java的包管理是一样的 同样也需要import导入资源声明 package pkgA { import com.oracle.nio. ...
- 前端RSA密钥生成和加解密——window.crypto使用相关
转自简书,原文地址,本文介绍window.crypto关于RSA方面的API. crypto API支持常用的rsa.aes加解密,这边介绍rsa的应用. 浏览器兼容性 window.crypto需要 ...
- 三.mysql问答合集
目录 三.MySQL 3.1 关系型和非关系型数据库的区别 关系型数据库 非关系型数据库 3.2 登录数据库的方式,如何远程登录 3.3 MySQL的服务结构,当客户端发起请求后,处理过程 3.4 如 ...