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. iOS开源项目周报0112

    由OpenDigg 出品的iOS开源项目周报第五期来啦.我们的iOS开源周报集合了OpenDigg一周来新收录的优质的iOS开发方面的开源项目,方便iOS开发人员便捷的找到自己需要的项目工具等. GD ...

  2. Debian 8 安装BtSync

    声明,此方法是Btsync的官网resilio提供的方法 传送门:https://help.getsync.com/hc/en-us/articles/206178924 第一,在如下文件中添加: 1 ...

  3. Redmine管理项目1-自定义属性

    先是点击页面导航条(最上面那排菜单,有主页.我的工作台.项目.管理.帮助等)上的“管理”菜单,看到下图: 看到里面的“自定义属性”菜单了吧,点击它,可以看到下面的界面: 点击那个“新建自定义属性”菜单 ...

  4. 解决xcode7.3的一个bug的方法

    我今天遇到个bug,就是pod后,居然系统自带的提示语全部没有了,连NSString都要自己拼写,后来百度了,但是都没有解决,然后综合了一下,解决了. 方法: 首先点击桌面 找到前往-->然后选 ...

  5. angularjs的directive详解

    Directive(指令)笔者认为是AngularJ非常强大而有有用的功能之一.它就相当于为我们写了公共的自定义DOM元素或CLASS属性或ATTR属性,并且它不只是单单如此,你还可以在它的基础上来操 ...

  6. 同时操作两个数据库:报错Illegal attempt to associate a collection with two open sessions

    今天我在一个操作两个数据库的SSH里 同时插入1条数据 报错 Illegal attempt to associate a collection with two open sessions 在这里有 ...

  7. webpack + vue最佳实践

    webpack + vue最佳实践 我的原文地址:http://www.xiaoniuzai.cn/2016/10/04/webpack%20+%20vue%E6%9C%80%E4%BD%B3%E5% ...

  8. jsp页面根据当前时间和定义时间差计算动态倒计时

    jsp页面根据当前时间和定义时间差计算动态倒计时http://www.jb51.net/article/74140.htm    var maxtime =1000*60; //半个小时,按秒计算,自 ...

  9. <hdu - 1863> 畅通工程 并查集和最小生成树问题

    本题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1863  Problem Description: 省政府“畅通工程”的目标是使全省任何两个村庄间都可以 ...

  10. CodeForces 669E Little Artem and Time Machine

    树状数组,$map$. 可以理解为开一个数组$f[i][j]$记录:$i$这个数字在时间$j$的操作情况. 操作$1$:$f[x][t]++$.操作$2$:$f[x][t]--$.操作$3$:$f[x ...