L3-005. 垃圾箱分布
L3-005. 垃圾箱分布
题目链接:https://www.patest.cn/contests/gplt/L3-005
Dijstra
与L2-001.紧急救援类似,是Dijstra最短路的拓展,要注意排序是按照:
1.到所有居民点的最小距离的最大;
2.平均距离最短;
3.编号最小.
代码如下:
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define N 1000
#define M 10
#define EPS 1e-8
using namespace std;
const int INF=0x3fffffff;
int mp[N+M+][N+M+];
int n,m,d;
int Dis[M+][N+M+];
bool out[N+M+];
struct res{
double ave,mindis;
int num;
bool mark;
};
res r[];
int inti(char a[]);
void dijstra(int x);
bool compare(res a,res b){
if(a.mindis!=b.mindis)
return a.mindis>b.mindis;
else{
if(fabs(a.ave-b.ave)<EPS)
return a.num<b.num;
else
return a.ave<b.ave;
}
}
int main(void){
//freopen("in.txt","r",stdin);
int k;
for(int i=;i<=N+M;i++)
for(int j=;j<=N+M;j++)
mp[i][j]=INF;
scanf("%d%d%d%d",&n,&m,&k,&d);
while(k--){
char a[][];
int b[],dis;
scanf("%s%s%d\n",a[],a[],&dis);
for(int i=;i<;i++){
if(''<=a[i][]&&a[i][]<='')
b[i]=inti(a[i]);
else
b[i]=N+inti(&a[i][]);
}
mp[b[]][b[]]=mp[b[]][b[]]=dis;
}
for(int i=;i<=m;i++){
for(int j=;j<=N+m;j++)
Dis[i][j]=INF;
memset(out,,sizeof(out));
dijstra(i);
}
for(int i=;i<=m;i++){
r[i].mindis=INF;
r[i].num=i;
for(int j=;j<=n;j++){
if(Dis[i][j]!=INF){
if(Dis[i][j]>d)
r[i].mark=;
if(r[i].mindis>Dis[i][j])
r[i].mindis=Dis[i][j];
r[i].ave+=Dis[i][j];
}
}
r[i].ave/=n;
}
sort(&r[],&r[]+m,compare);
bool flag=;
for(int i=;i<=m;i++){
if(r[i].mark)continue;
printf("G%d\n",r[i].num);
printf("%.1lf %.1lf\n",r[i].mindis,r[i].ave);
flag=;
break;
}
if(flag)
printf("No Solution\n");
return ;
}
int inti(char a[]){
int len=strlen(a);
int temp=;
for(int i=;i<len;i++)
temp=temp*+(a[i]-'');
return temp;
}
void dijstra(int x){
Dis[x][N+x]=;
while(){
int Min=INF,index;
for(int i=;i<=N+m;i++){
if(out[i]&&Min>Dis[x][i]){
Min=Dis[x][i];
index=i;
}
}
if(Min==INF)break;
out[index]=;
for(int i=;i<=N+m;++i){
if(out[i]&&Dis[x][index]+mp[index][i]<Dis[x][i])
Dis[x][i]=Dis[x][index]+mp[index][i];
}
}
}
如有更好的方法,望不吝赐教!!
L3-005. 垃圾箱分布的更多相关文章
- PAT 垃圾箱分布(30分)dijstra
垃圾箱分布 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 大家倒垃圾的时候,都希望垃圾箱距离自己比较近,但是谁都不愿意守着垃圾 ...
- PAT天梯赛练习题——L3-005. 垃圾箱分布(暴力SPFA)
L3-005. 垃圾箱分布 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 大家倒垃圾的时候,都希望垃圾箱距离自己比较近,但是谁 ...
- 【最短路+较复杂处理】PAT-L3-005. 垃圾箱分布
L3-005. 垃圾箱分布 大家倒垃圾的时候,都希望垃圾箱距离自己比较近,但是谁都不愿意守着垃圾箱住.所以垃圾箱的位置必须选在到所有居民点的最短距离最长的地方[此处为第一重排序选择的条件],同时还要保 ...
- PAT L3-005. 垃圾箱分布
最短路. 枚举垃圾箱放哪里,然后算最短路. #include<map> #include<set> #include<ctime> #include<cmat ...
- PAT天梯赛L3-005 垃圾箱分布
题目链接:点击打开链接 大家倒垃圾的时候,都希望垃圾箱距离自己比较近,但是谁都不愿意守着垃圾箱住.所以垃圾箱的位置必须选在到所有居民点的最短距离最长的地方,同时还要保证每个居民点都在距离它一个不太远的 ...
- PTA刷题笔记
PTA刷题记录 仓库地址: https://github.com/Haorical/Code/tree/master/PTA/GPLT 两周之内刷完GPLT L2和L3的题,持续更新,包括AK代码,坑 ...
- PAT团体程序设计天梯赛 - 模拟赛
由于本人愚笨,最后一题实在无力AC,于是只有前14题的题解Orz 总的来说,这次模拟赛的题目不算难,前14题基本上一眼就有思路,但是某些题写起来确实不太容易,编码复杂度有点高~ L1-1 N个数求和 ...
- 理解 OpenStack 高可用(HA)(2):Neutron L3 Agent HA 之 虚拟路由冗余协议(VRRP)
本系列会分析OpenStack 的高可用性(HA)概念和解决方案: (1)OpenStack 高可用方案概述 (2)Neutron L3 Agent HA - VRRP (虚拟路由冗余协议) (3)N ...
- VXLAN, 一种叠加在L3网络上的L2网络
这几天看了下RFC7348,顺便翻译了一下,根据自己理解做了注解 虚拟化及租户隔离 服务器虚拟化增加了对物理网络基础设施的需求,服务器有多个虚机,要求交换机支持更大的MAC地址表. 在数据中心场景下, ...
随机推荐
- Form 提交表单
---HTML <form action="/Sample/SampleList/ExportSample" style="display:inline" ...
- Attribute value is quoted with " which must be escaped when used within the value 问题解决
访问JSP时,报错:Attribute value is quoted with " which must be escaped when used within the value .相信 ...
- Qt编译
版本及安装环境 项目 版本 位 Windows 7 x64 Visual Studio 2010 x64 qt 4.8.6 x64 下载源码 进入下载列表,下载qt-everywhere-openso ...
- CoreJavaE10V1P3.8 第3章 Java的基本编程结构-3.8 控制流程(Control Flow)
通过使用条件语句.循环语句可以实现流程的控制. 3.8.1 块作用域(Block Scope) 块(Block)就是由一对花括号包围起来的部分.他指定了一个变量的生存范围,与一个方法的操作范围. Ja ...
- UGUI和现实世界的比例关系
之前测试过默认大小的 Cube 在现实中的 比例关系,得出基本单位为 m 的结论,至于 UGUI和现实世界的比例关系 看下图就知道了: Cube Collider 的大小: Button 的大小: 其 ...
- PyQt5+python3+pycharm开发环境配置
1.下载PyQt https://sourceforge.net/projects/pyqt/files/PyQt5/PyQt-5.6/PyQt5-5.6-gpl-Py3.5-Qt5.6.0-x32- ...
- 对于行高(line-height)的一些理解
刚一开始学习这个特性的时候,总是出一些当时看起来很奇怪的问题.现在决定重新整理一下.毕竟使用css,十行揉在一起凑出效果是一种使用,知道为什么会有这种效果也是一种使用.我们需要做一些测试,所以首先需要 ...
- Firewalld防火墙
Firewalld服务是红帽RHEL7系统中默认的防火墙管理工具,特点是拥有运行时配置与永久配置选项且能够支持动态更新以及"zone"的区域功能概念,使用图形化工具firewall ...
- google 技巧
inurl: 用于搜索网页上包含的URL. 这个语法对寻找网页上的搜索,帮助之类的很有用. intext: 只搜索网页部分中包含的文字(也就是忽略了标题,URL等的文字). site: 可以限制你搜索 ...
- 花点时间搞清top、clientTop、scrollTop、offsetTop
[转贴]花点时间搞清top.clientTop.scrollTop.offsetTop scrollHeight: 获取对象的滚动高度. scrollLeft:设置或获取位于对象左边界和窗口中目前 ...