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. 垃圾箱分布的更多相关文章

  1. PAT 垃圾箱分布(30分)dijstra

    垃圾箱分布 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 大家倒垃圾的时候,都希望垃圾箱距离自己比较近,但是谁都不愿意守着垃圾 ...

  2. PAT天梯赛练习题——L3-005. 垃圾箱分布(暴力SPFA)

    L3-005. 垃圾箱分布 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 大家倒垃圾的时候,都希望垃圾箱距离自己比较近,但是谁 ...

  3. 【最短路+较复杂处理】PAT-L3-005. 垃圾箱分布

    L3-005. 垃圾箱分布 大家倒垃圾的时候,都希望垃圾箱距离自己比较近,但是谁都不愿意守着垃圾箱住.所以垃圾箱的位置必须选在到所有居民点的最短距离最长的地方[此处为第一重排序选择的条件],同时还要保 ...

  4. PAT L3-005. 垃圾箱分布

    最短路. 枚举垃圾箱放哪里,然后算最短路. #include<map> #include<set> #include<ctime> #include<cmat ...

  5. PAT天梯赛L3-005 垃圾箱分布

    题目链接:点击打开链接 大家倒垃圾的时候,都希望垃圾箱距离自己比较近,但是谁都不愿意守着垃圾箱住.所以垃圾箱的位置必须选在到所有居民点的最短距离最长的地方,同时还要保证每个居民点都在距离它一个不太远的 ...

  6. PTA刷题笔记

    PTA刷题记录 仓库地址: https://github.com/Haorical/Code/tree/master/PTA/GPLT 两周之内刷完GPLT L2和L3的题,持续更新,包括AK代码,坑 ...

  7. PAT团体程序设计天梯赛 - 模拟赛

    由于本人愚笨,最后一题实在无力AC,于是只有前14题的题解Orz 总的来说,这次模拟赛的题目不算难,前14题基本上一眼就有思路,但是某些题写起来确实不太容易,编码复杂度有点高~ L1-1 N个数求和 ...

  8. 理解 OpenStack 高可用(HA)(2):Neutron L3 Agent HA 之 虚拟路由冗余协议(VRRP)

    本系列会分析OpenStack 的高可用性(HA)概念和解决方案: (1)OpenStack 高可用方案概述 (2)Neutron L3 Agent HA - VRRP (虚拟路由冗余协议) (3)N ...

  9. VXLAN, 一种叠加在L3网络上的L2网络

    这几天看了下RFC7348,顺便翻译了一下,根据自己理解做了注解 虚拟化及租户隔离 服务器虚拟化增加了对物理网络基础设施的需求,服务器有多个虚机,要求交换机支持更大的MAC地址表. 在数据中心场景下, ...

随机推荐

  1. 蓝桥杯 C语言 入门训练 序列求和

    问题描述 求1+2+3+...+n的值. 输入格式 输入包括一个整数n. 输出格式 输出一行,包括一个整数,表示1+2+3+...+n的值. 样例输入 4 样例输出 10 样例输入 100 说明:有一 ...

  2. Jquery Form表单取值

    之前js取form表单的值都是一个一个的取,数量一多之后容易出错而且烦透了.感谢那些愿意分享的人. 页面定义form,并给form指定id值,里面的元素只要是需要键值对应的都赋予name属性,并且na ...

  3. hibernate-部分字段查询方案

    hibernate的延迟加载与本列记录不一样,延迟加载正常一般用于关联字段,或者大型字段使用. 本列的情况主要用于,某一张表有几十甚至上百个字段,例如财务报表等.但是在使用某些场景是却大多只是用其10 ...

  4. 有关css3的一些问题

    CSS3新特性(阴影.动画.渐变.变形.伪元素等) CSS3与页面布局学习总结--CSS3新特性(阴影.动画.渐变.变形.伪元素等)     目录 一.阴影 1.1.文字阴影 1.2.盒子阴影 二.背 ...

  5. 汇农PC个人中心总结

    1. 技巧总结 1. 使用 padding 编写灵活的 登录 | 注册, '|' 竖线, 参考: http://www.imooc.com/learn/710 font-size: 0; border ...

  6. typings 命令使用注意

    1.如果要查询一些库 typings search xxx 2.安装jquery node 这样的库要这样 typings dt~node --global --save   一定要dt~xxx ,然 ...

  7. Linux网络管理之net-tools VS iproute2

    查看网卡及IP ifconfig ip link [show] --------- ifconfig -a ip addr show 激活和停止网络接口 ifconfig eth0 up/down i ...

  8. 复习java7 集合的底层实现理解

    1.ArrayList 特点:查询快,增删慢,可以重复,无序 实现:底层是用数组实现的,在添加数据的时候,当数组已经满了,会扩容,默认增加1.5倍的原数组长度,并将旧的数组数据拷贝到新的数组上. 2. ...

  9. WEB典型应用

  10. Photoshop定义画笔选区为空的原因

    定义画笔预设时,选择选区后需填充黑色,否则将出现选区为空的提示