1072 Gas Station (30 point(s))

【信息科学与工程学】【数据科学】数据科学领域-第三篇 数学基础04 集合论02 编号类型概念类别概念名称数学定义/描述数学表示性质特征重要特例相关理论问题的数学分析参数列表及参数数值范围关联知识1基础集合论本体集合若干确定的、互不相同的对象的总体A,B,…确定性、互异性、无序性∅,N,RZFC 公理系元素归属判定 x∈A势 ∥A∥∈{finite}∪[ℵ0​,+∞)朴素集合论→公理化2基础集合运算并/交/差/补按逻辑联结词定义的集合操作A∪B,A∩B,A∖B交换律、结合律、分配律、De MorganA∪∅=A布尔代数多集合推广 ⋃i∈I​Ai​I为指标集,可数/不可数测度论3基础构造幂 阅读详情

1072 Gas Station (30 point(s))

A gas station has to be built at such a location that the minimum distance between the station and any of the residential housing is as far away as possible. However it must guarantee that all the houses are in its service range.

Now given the map of the city and several candidate locations for the gas station, you are supposed to give the best recommendation. If there are more than one solution, output the one with the smallest average distance to all the houses. If such a solution is still not unique, output the one with the smallest index number.

Input Specification:

Each input file contains one test case. For each case, the first line contains 4 positive integers: N (≤10​3​​), the total number of houses; M (≤10), the total number of the candidate locations for the gas stations; K (≤10​4​​), the number of roads connecting the houses and the gas stations; and D​S​​, the maximum service range of the gas station. It is hence assumed that all the houses are numbered from 1 to N, and all the candidate locations are numbered from G1 to GM.

Then K lines follow, each describes a road in the format

P1 P2 Dist

where P1 and P2 are the two ends of a road which can be either house numbers or gas station numbers, and Dist is the integer length of the road.

Output Specification:

For each test case, print in the first line the index number of the best location. In the next line, print the minimum and the average distances between the solution and all the houses. The numbers in a line must be separated by a space and be accurate up to 1 decimal place. If the solution does not exist, simply output No Solution.

Sample Input 1:

4 3 11 5
1 2 2
1 4 2
1 G1 4
1 G2 3
2 3 2
2 G2 1
3 4 2
3 G3 2
4 G1 3
G2 G1 1
G3 G2 2

Sample Output 1:

G1
2.0 3.3

Sample Input 2:

2 1 2 10
1 G1 9
2 G1 20

Sample Output 2:

No Solution

Dijkstra的应用。暴力求解,对每个G结点用Dijkstra()求解,每一次的结果按照题设要求判断。优先级如下:

1. 所有居民点在DS范围内;

2. 在满足1的条件下,优先选择最大的nearest(最大化各居民点到加油站的最小距离);

3. 若2不唯一,优先选择总距离(同理平均距离)最小的;

4. 若3不唯一,优先选择标号最小的(由于我们是按照顺序遍历的,若3不唯一不作任何更新即可)。

调试过程中一些几位无语的错误:

1. 寻找新的结点for循环中,把<=写成<;

2. 判断total和bestTotal的时候,符号写反!

这些错误虽然都不是思路上的,但是在考试中相当致命啊!本题编码时间20分钟,调试时间可能达到了2小时!

发现:题目保证了所有结点之间连通。

#include<iostream>
#include<vector>
#include<cstring>
#define INF 0x3f3f3f3f
using namespace std;
const int MAX = 1017;
int N,M,K,DS;//houses stations roads 
int string2int(string s){
	//1 to N G1 to GM
	bool isStation =false;
	if(s[0]=='G'){
		s.erase(s.begin());
		isStation=true;
	}
	int ans = 0;
	for(int i=0;i<s.length();i++){
		ans = ans*10+s[i]-'0';
	}
	if(isStation) ans+=N;
	return ans;
}
struct Edge{
	int next;int weight;
	Edge(int n,int w):next(n),weight(w){ }
};
vector<Edge> graph[MAX];
bool visit[MAX];
int dis[MAX]; 
int main(void){
	cin>>N>>M>>K>>DS;
	string a,b;int dest;
	while(K--){
		cin>>a>>b>>dest;
		int p1 = string2int(a);
		int p2 = string2int(b); 
		graph[p1].push_back(Edge{p2,dest});
		graph[p2].push_back(Edge{p1,dest});
	}
	int bestStation = -1;int bestBound = 0;int bestTotal = INF;
	for(int k=N+1;k<=N+M;k++){//从k出发
		int newP = k;
		memset(dis,-1,sizeof(dis));
		memset(visit,false,sizeof(visit)); 
		dis[newP]=0;
		visit[newP]=true;
		int cnt=0;
		while(cnt<N)
		//for(int p=1;p<M+N;p++)
		{
			for(int i=0;i<graph[newP].size();i++){
				int cur = graph[newP][i].next;
				int w = graph[newP][i].weight;
				if(visit[cur]) continue;
				if(dis[cur]==-1||dis[newP]+w<dis[cur]){
					dis[cur]=w+dis[newP];
				}
			}
			int min = INF;
			for(int i=1;i<=N+M;i++){
				if(visit[i]) continue;
				if(dis[i]==-1) continue;
				if(dis[i]<min){
					min = dis[i];
					newP = i;
				}
			}
			visit[newP] = true;
			if(newP>=1&&newP<=N) cnt++;
		}
		int nearest = INF;int total=0;
		bool isOK = true;
		for(int i=1;i<=N;i++){
			if(dis[i]>DS){
				isOK = false;
				break;
			}
			nearest = min(nearest,dis[i]);
			total+=dis[i];
		}
		if(isOK){
			if(nearest>bestBound){
				bestStation = k;
				bestBound = nearest;
				bestTotal = total;
			}else if(nearest==bestBound&&total<bestTotal){
				bestStation = k;
				bestTotal = total;
			}
		}
	}
	if(bestStation==-1) cout<<"No Solution"<<endl;
	else{
		printf("G%d\n",bestStation-N);
		printf("%.1f %.1f\n",double(bestBound),double(bestTotal)/double(N));
	}
	return 0;
}

 

【信息科学与工程学】计算机科学与技术——第七十七篇 系统架构设计02 编号类型模型配方企业资本运作的方法/规则/条件/依据及所有的步骤(​风险处理/异常处理/危机应对关联知识法律法规和裁决依据​​由发起人(通常是知名投资人、投行或产业资本)先设立一个只有现金、无实际业务的特殊目的收购公司(SPAC),通过IPO募集资金并在交易所上市。然后在规定时间内(通常24个月)寻找一家非上市公司进行合并(De-SPAC),使目标公司迅速实现上市,规避传统IPO的复杂流程和不确定性。1.:在开曼或特拉华注册空壳公司,注入少量种子资金。2. 阅读详情

相关推荐

政府科技管理者如何提升科技成果转化项目进场交易的备案效率?.docx

政府科技管理者如何提升科技成果转化项目进场交易的备案效率?

1072 Gas Station (30 point(s))

题解 dijkstra的应用。 #include&lt;iostream&gt; #include&lt;cstdio&gt; #include&lt;algorithm&gt; using namespace std; const int MAXN = 1e3 + 20; const int INF = 0x3f3f3f3f; int e[MAXN][MAXN], dis[MAXN];...

徐伯莱 333

山区道路边坡落石隐患检测数据集VOC+YOLO格式241张1类别.md

【重要提示】本页面仅为资源介绍,不含外部下载地址 亲爱的 优快云 用户: 感谢你浏览本资源页面,在这里提前向大家说明相关情况,避免后续产生误解。本资源我设置的初衷是 0 积分免费分享文档介绍,希望可以无偿给到有需要的朋友。但 优快云 平台存在自动调控机制,系统会根据资源下载热度、文件体积、平台规则等因素,自动修改资源所需下载积分,页面显示为 1 积分、2 积分或更高积分都属于平台自动调整结果,并非我手动修改设置,我没有权限自主锁定积分数值。 如果你打开页面后,发现下载所需积分不为 0,请务必谨慎考虑是否下载。一旦你支付积分完成下载,后续遇到资源内容和描述不符、文件损坏等问题,我无法承担对应的积分损失,也没有渠道为你办理积分退还。在此强烈建议,只有页面明确显示 0 积分的时候,再进行下载操作。 同时特别说明:这份资源介绍文案里,没有附带任何外部下载地址。资源本身是通过 优快云 官方上传通道上传的附件,正常情况下直接点击页面自带的下载按钮即可获取文件。页面找不到外部下载链接属于正常情况,并非资源缺失。 如果因为平台积分显示异常,导致你被扣取积分,积分退款、积分异常相关问题,请直接联系 优快云 官方客服咨询处理。平台规则由官方制定,我无法干预积分变动,望各位理解。

1072 Gas Station (30point(s)) - C语言 PAT 甲级

Dijkstra 计算最短路径 * 对 M 个加油站依次计算 Dijkstra 最短路径 * 判断此加油站的服务范围覆盖,最近村庄最远,平均距离最小,编号最小 * 输出最终编号

有三只土豆 237

高空作业栏杆检测数据集VOC+YOLO格式230张3类别.md

【重要提示】本页面仅为资源介绍,不含外部下载地址 亲爱的 优快云 用户: 感谢你浏览本资源页面,在这里提前向大家说明相关情况,避免后续产生误解。本资源我设置的初衷是 0 积分免费分享文档介绍,希望可以无偿给到有需要的朋友。但 优快云 平台存在自动调控机制,系统会根据资源下载热度、文件体积、平台规则等因素,自动修改资源所需下载积分,页面显示为 1 积分、2 积分或更高积分都属于平台自动调整结果,并非我手动修改设置,我没有权限自主锁定积分数值。 如果你打开页面后,发现下载所需积分不为 0,请务必谨慎考虑是否下载。一旦你支付积分完成下载,后续遇到资源内容和描述不符、文件损坏等问题,我无法承担对应的积分损失,也没有渠道为你办理积分退还。在此强烈建议,只有页面明确显示 0 积分的时候,再进行下载操作。 同时特别说明:这份资源介绍文案里,没有附带任何外部下载地址。资源本身是通过 优快云 官方上传通道上传的附件,正常情况下直接点击页面自带的下载按钮即可获取文件。页面找不到外部下载链接属于正常情况,并非资源缺失。 如果因为平台积分显示异常,导致你被扣取积分,积分退款、积分异常相关问题,请直接联系 优快云 官方客服咨询处理。平台规则由官方制定,我无法干预积分变动,望各位理解。

ti-cgt-c2000-22.6.0.LTS-windows-x64-installer

ti-cgt-c2000-22.6.0.LTS-windows-x64-installer

PAT----A1072 Gas Station (30point(s))

A1072 Gas Station (30point(s)) 题意 给出加油站、房子之间的距离,最大服务距离,要求输出最优的加油站,如果没有符合条件(全部房子在服务范围内)的加油站则输出 No Solution 最优就是这个加油站到房子的距离最小的最大,到所有房子的平均距离最小,id最小,三个条件优先级逐个递减。 思路 Dijkstra算法,算是写得比较熟了。 总结 Sample Input1: ...

qq_43578870的博客 205

Hadoop生态系统-新手快速入门(含HDFS、HBase系统架构)

Hadoop简介 Hadoop是一个由Apache基金会所开发的分布式系统基础架构。 用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。 Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量...

Hadoop环境搭建教程 472

*PAT_甲级_1072 Gas Station (30point(s)) (C++)【Dijkstra/字符串截取/与数字相互转换】

1,题目描述 2,思路 3,AC代码

&再见萤火虫&的博客 308

windows系统下,如何为comfyui如何安装triton

​ 有些加速插件、模型在安装的时候,比如说sageattention的安装,就需要提前安装triton这个包,不过这个包有点特殊,windows下略微不好装,经常会装失败。 🎠如何安装 之前也有人介绍过,要到github上找个wheel文件,找到对应的版本安装下就好了。 问题是:https://github.com/woct0rdho/triton-windows/releases 这个git地址上,已经找不到wheel文件了... ​

聚梦小课堂 4502

TMS320C6678开发笔记1-6---C6678单核烧写程序

第6节 单核烧写加载程序 6.1节 TI参考文档 参考文档:《KeystoneI Bootloader Resources and FAQ》讲的非常好,建议一定要看 https://processors.wiki.ti.com/index.php/KeystoneI_Bootloader_Resources_and_FAQ#Direct_Boot_Examples_.28without_IBL.29 里面有三个工程: C6678 EVM SPI boot example C6657 EVM ..

kunkliu的博客 5697

Dijkstra_1072 Gas Station (30 分)

1072 Gas Station (30 分) A gas station has to be built at such a location that the minimum distance between the station and any of the residential housing is as far away as possible. However it must g...

A_Bo的博客 519

h5支付不能打开支付宝 ios_iOS支付宝H5支付无法返回APP解决方案

本文前大段在讲楼主是如何解决这个问题的,以及中间遇到的麻烦。赶时间的同学可以直接看最后的 最终解决方案。在讨论之前,我们先看看官方文档上的一句话:注意:在iOS系统中,唤起支付宝App支付完成后,不会自动回到浏览器或商户APP。用户可手工切回到浏览器或商户APP;支付宝H5收银台会自动跳转回商户return_url指定的页面。what? 官方直接跟我们说GG了?楼主不甘心,还是想尝试一下。借鉴之前...

weixin_39864101的博客 856

1072 Gas Station (30 point(s))

1072 Gas Station (30 point(s)) A gas station has to be built at such a location that the minimum distance between the station and any of the residential housing is as far away as possible. However it must guarantee that all the houses are in its service ra

佳迪斯的博客 186

【腾讯小龙虾WorkBuddy专栏02】保姆级安装教程!彻底分清WorkBuddy/CodeBuddy,最新积分活动&会员体系全攻略

【腾讯小龙虾WorkBuddy专栏02】保姆级安装教程!彻底分清WorkBuddy/CodeBuddy,最新积分活动&会员体系全攻略

AI人人懂 2643

基于STM32、HAL库的TCA9555PWR I/O扩展器驱动程序设计

define TCA9555_ADDR_BASE 0x20 // 基础地址 (A0=A1=A2=0)* @param direction: 方向 (0=输出, 1=输入)* @param direction: 方向 (0=输出, 1=输入)* @param polarity: 极性 (0=正常, 1=反转)* @param polarity: 极性 (0=正常, 1=反转)

corlin6688的博客 528

PAT(甲级)1072 Gas Station (30point(s))

题目 题目链接 思路 题目大意:一共有n个居民房和m个加油站候选点,要求从这m个加油站候选点中选择一个距离其最近的居民房的距离尽可能大的加油站,如果最近的居民房到加油站的距离相等,则选择平均距离最小的那个加油站; 首先是加油站和居民房的id问题,因为加油站和居民房的id以字符串给出,不妨这样处理,将居民房从1到n编号,加油站从n+1到n+m编号; 多次使用Dijktras算法,每次选择一个加油站,计算每个居民房到此加油站的最短距离,然后遍历距离数组d[],遍历过程中,需要干3件事: 1、检查此加油站到居民房

hjyp的博客 191

“/usr/lib/wsl/wsl-setup“ failed, exiting

WSL2安装Ubuntu时出现"wsl-setup failed"错误的解决方法 摘要:当Windows用户名包含中文字符时,安装WSL2+Ubuntu会出现"wsl-setup failed"错误。本文提供两种解决方案:1)修改中文用户名(风险较大);2)通过命令手动配置。推荐第二种方法:先使用"wsl -l -v"查看Ubuntu名称,再通过"wsl -d Ubuntu20.04 -e /bin/bash"命令启动WSL2系

猿小白的博客 997

PAT(A) 1072 Gas Station (30 point(s))

dijstra 有个非常奇怪的现象,使用Run Test Case时小数无法四舍五入(如下图),但是提交却可AC。原因未知。抓脑壳 #include<bits/stdc++.h> using namespace std; int N, M, K, ans = -1, dist[1020][1020], vis[1020], d[1020]; double Ds, sumD = INT_MAX, minD = 0; int sToi(string s){ if(s[0] == '.

Anpotan的博客 141

30天Python入门(第一天:Python入门)

30天带你入门Python,这是第一天

Science prince的博客 584

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

PAT A1072 Gas Station(30)

题意这个题读起来有点烦,是这样的,首先有N个居民房和M个加油站,每个加油站都对应着一个最小距离和平均距离,加油站的最小距离是指从他到其他所有居民房的最短路径的最小值(从N条最短路径里面选),现在让你选择一个加油站,首先他到所有居民房的最短路径均不能大于服务范围(每个加油站一样),其次他的最小距离在所有加油站的最小距离中最大(从M个加油站中选),若不唯一,选择平均距离最小的,若再不唯一,选择编号最小的

Crossing over 493

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

1072. Gas Station (30)

1072. Gas Station (30) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue A gas station has to be built at such a location that the minimum distance between the s...

fantasydreams的专栏 260

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

PAT甲级1072. Gas Station (30)

A gas station has to be built at such a location that the minimum distance between the station and any of the residential housing is as far away as possible. However it must guarantee that all the hous

liaotl10的博客 368

1072 Gas Station(30 分)

1072 Gas Station(30 分) A gas station has to be built at such a location that the minimum distance between the station and any of the residential housing is as far away as possible. However it must gu...

CODER的博客 637
上一篇: 1075 PAT Judge (25 point(s))
下一篇: 1004 Counting Leaves (30 point(s))
coderwait
博客等级 码龄9年 20粉丝 210原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值