HDU-1690,Bus System(弗洛伊德)

简介: HDU-1690,Bus System(弗洛伊德)

Problem Description:


Because of the huge population of China, public transportation is very important. Bus is an important transportation method in traditional public transportation system. And it’s still playing an important role even now.

The bus system of City X is quite strange. Unlike other city’s system, the cost of ticket is calculated based on the distance between the two stations. Here is a list which describes the relationship between the distance and the cost.

网络异常,图片无法展示
|





Your neighbor is a person who is a really miser. He asked you to help him to calculate the minimum cost between the two stations he listed. Can you solve this problem for him?

To simplify this problem, you can assume that all the stations are located on a straight line. We use x-coordinates to describe the stations’ positions.


Input:


The input consists of several test cases. There is a single number above all, the number of cases. There are no more than 20 cases.

Each case contains eight integers on the first line, which are L1, L2, L3, L4, C1, C2, C3, C4, each number is non-negative and not larger than 1,000,000,000. You can also assume that L1<=L2<=L3<=L4.

Two integers, n and m, are given next, representing the number of the stations and questions. Each of the next n lines contains one integer, representing the x-coordinate of the ith station. Each of the next m lines contains two integers, representing the start point and the destination.

In all of the questions, the start point will be different from the destination.

For each case,2<=N<=100,0<=M<=500, each x-coordinate is between -1,000,000,000 and 1,000,000,000, and no two x-coordinates will have the same value.


Output:


For each question, if the two stations are attainable, print the minimum cost between them. Otherwise, print “Station X and station Y are not attainable.” Use the format in the sample.


Sample Input:


2


1 2 3 4 1 3 5 7


4 2


1 2 3 4


1 4


4 1


1 2 3 4 1 3 5 7


4 1


1


2


3


10


1 4


Sample Output:


Case 1:


The minimum cost between station 1 and station 4 is 3.


The minimum cost between station 4 and station 1 is 3.


Case 2:


Station 1 and station 4 are not attainable.


解题思路:


这道题其实就是个最短路的问题,用Floyd和Dijkstra都可以写,但是主要是数据的问题,之前用int,long long都一直过不去,后来改成了#define LL __int64才AC的,只能说还是自己太水了啊。。。下面我们看代码


程序代码:


#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
#define LL __int64
const LL INF=1e18;
LL map[1001][1101],dis[1001];
int main()
{
  LL ans=1,l1,l2,l3,l4,c1,c2,c3,c4,n,m,v,t;
  cin>>t;
  while(t--)
  {
    cin>>l1>>l2>>l3>>l4>>c1>>c2>>c3>>c4;
    cin>>n>>m;
    for(LL i=1;i<=n;i++)
      cin>>dis[i];
    for(LL i=1;i<=n;i++)
    {
      for(LL j=1;j<=n;j++)
      {
        if(i==j)
          map[i][j]=0;
        else
        {
          LL cnt=abs(dis[i]-dis[j]);
          if(cnt>0&&cnt<=l1)
            v=c1;
          else if(cnt>l1&&cnt<=l2)
            v=c2;
          else if(cnt>l2&&cnt<=l3)
            v=c3;
          else if(cnt>l3&&cnt<=l4)
            v=c4;
          else
            v=INF;
          map[i][j]=map[j][i]=v;
        }
      }
    }
    for(LL k=1;k<=n;k++)
    {
      for(LL i=1;i<=n;i++)
      {
        for(LL j=1;j<=n;j++)
        {
          if(map[i][j]>(map[i][k]+map[k][j]))
            map[i][j]=map[i][k]+map[k][j];
        }
      }
    }
    printf("Case %d:\n",ans++);
    for(LL i=0;i<m;i++)
    {
      LL a,b;
      cin>>a>>b;
      if(map[a][b]==INF)
        printf("Station %I64d and station %I64d are not attainable.\n",a,b);
      else
        printf("The minimum cost between station %I64d and station %I64d is %I64d.\n",a,b,map[a][b]);
    }
  }
  return 0;
}


相关文章
|
安全 数据处理 C++
GNU Radio之OFDM Carrier Allocator底层C++实现
GNU Radio之OFDM Carrier Allocator底层C++实现
279 1
GNU Radio之OFDM Carrier Allocator底层C++实现
|
文字识别 前端开发
CodeFuse-VLM 开源,支持多模态多任务预训练/微调
随着huggingface开源社区的不断更新,会有更多的vision encoder 和 LLM 底座发布,这些vision encoder 和 LLM底座都有各自的强项,例如 code-llama 适合生成代码类任务,但是不适合生成中文类的任务,因此用户常常需要根据vision encoder和LLM的特长来搭建自己的多模态大语言模型。针对多模态大语言模型种类繁多的落地场景,我们搭建了CodeFuse-VLM 框架,支持多种视觉模型和语言大模型,使得MFT-VLM可以适应不同种类的任务。
1306 0
|
Linux
FFmpeg开发笔记(三十四)Linux环境给FFmpeg集成libsrt和librist
《FFmpeg开发实战》书中介绍了直播的RTSP和RTMP协议,以及新协议SRT和RIST。SRT是安全可靠传输协议,RIST是可靠的互联网流传输协议,两者于2017年发布。腾讯视频云采用SRT改善推流卡顿。以下是Linux环境下为FFmpeg集成libsrt和librist的步骤:下载安装源码,配置、编译和安装。要启用这些库,需重新配置FFmpeg,添加相关选项,然后编译和安装。成功后,通过`ffmpeg -version`检查版本信息以确认启用SRT和RIST支持。详细过程可参考书中相应章节。
421 1
FFmpeg开发笔记(三十四)Linux环境给FFmpeg集成libsrt和librist
|
存储 弹性计算 对象存储
阿里云对象存储OSS的预留空间是指什么?
阿里云OSS预留空间是预付费存储产品,提供成本优化,通过锁定存储容量来享受折扣。它仅抵扣标准存储(本地冗余)和ECS快照费用。例如,为节省600GB存储成本,可购买500GB通用预留空间和100GB标准-本地冗余存储包。
539 1
|
存储 NoSQL 中间件
【Django+Vue3 线上教育平台项目实战】登录功能模块之短信登录与钉钉三方登录
在当今的数字化时代,用户认证是任何在线服务安全性的基石。本文将简明扼要地介绍登录注册流程中的核心概念:HTTP无状态性、Session、Token与JWT,并详细阐述两种实用登录方式—— 手机号登录验证(借助容联云/云通讯服务) 与钉钉第三方登录。我们将探讨这些概念的基本原理,并深入解析两种登录方式的实现流程,旨在帮助开发者提升用户认证的安全性与便捷性。
【Django+Vue3 线上教育平台项目实战】登录功能模块之短信登录与钉钉三方登录
|
存储 算法
USB3.2 摘录(10)
USB3.2 摘录(10)
229 1
|
前端开发 开发者
CSS盒子模型(如果想知道CSS有关盒子模型的知识点,那么只看这一篇就足够了!)
CSS盒子模型(如果想知道CSS有关盒子模型的知识点,那么只看这一篇就足够了!)
|
前端开发 JavaScript
【Web 前端】什么是原型链?
【4月更文挑战第22天】【Web 前端】什么是原型链?
|
Java Spring
定时任务里面的任务多线程操作
该内容是关于Spring Boot中配置异步任务和定时任务的代码示例。首先通过`@Configuration`和`@EnableAsync`开启异步支持,然后定义线程池,如使用`ThreadPoolExecutor`并设置核心线程数、最大线程数等参数。接着,在需要异步执行的方法上添加`@Async`注解。此外,通过`@EnableScheduling`开启定时任务,并使用`@Scheduled`定义具体任务和执行周期。若需指定多个线程池,可以创建不同的`Executor` bean,并在`@Async`中指定线程池名称。
189 2