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地址表. 在数据中心场景下, ...
随机推荐
- C++ 头文件系列(queue)
简介 这个头文件定义了两个跟队列有关的类----quque.priority_queue,分别实现的是队列 和 优先队列这两个概念. 但是与这两个类模版与其它类模版(vector.array等)最大的 ...
- .Net基于RealProxy实现AOP
一.概述 关于AOP(面向切面编程)还是先讲一个日常经常碰到的场景"错误日志的记录",一般来说我们编码的时候想记录错误日志都是用try..catch来进行捕捉和记录,慢慢的你会发现 ...
- sublime vue 语法高亮插件安装
默认情况下,Vue.js 的单文件组件(*.vue)在 sublime 编辑器中是不被识别的.若要想高亮显示,需要安装插件 Vue Syntax Hightlight.安装步骤如下: 第一,在 s ...
- Leetcode-34-Search Insert Position-(Medium)
二分法查找需要插入的位置,需要注意两点 1.如果元素不存在,停止的时候start Index刚好是需要插入的位置 2.如果元素存在,需要向前追溯找到非目标元素的起始边界 #!/usr/local/bi ...
- TypeScript 学习二 表达式和循环
表达式: 1,箭头表达式:将function用箭头代替,参数相应进行处理: 用来声明匿名函数,消除了传统匿名函数的this指针问题: 1) 例:简单的方法体为单行的方法,此时不需要大括号和return ...
- CoreJavaE10V1P3.1 第3章 Java的基本编程结构-3.1 Java 最简程序
3.1Java最简程序 FirstSample.java public class FirstSample { public static void main(String[] args) { Sys ...
- IMacro 脚本简记
抓取速卖通纠纷订单详情,生成csv进行统计. var macro1="CODE:";macro1+="VERSION BUILD=8970419 RECORDER=FX& ...
- 使用Maven快速创建一个SpringMVC工程步骤
第一步:创建maven工程,加入SpringMVC的maven依赖: <dependency> <groupId>org.springframework</groupId ...
- laravel5 MAC is invalid
如果本机的环境更换过,项目中用来加密Crypt组件中的参数会变更. 如果出现这个问题,得更换数据库中加密后的变量 stackoverflow上找到的解决方法都是 composer dump-autol ...
- JDOM与DOM主要有两方面不同
我这丝毫没有吐槽的意思哟,只是想说作为一个合格的程序员大家最起码需要做到思维严谨这点,在有能力的情况下对用户体验能提点建议最好.自己写的代码一定要经过严格测试再交付,不要指望测试人员帮你测试再去修改, ...