zoukankan      html  css  js  c++  java
  • 1029:积雪清理

    题目描述

    小明所在的城市昨晚下了一场大雪,所有道路都被积雪覆盖了。为了保证交通畅通,需要动用除雪车清理道路上的积雪,但是整个城市只有一辆除雪车。
    城市的每条道路都有两条行车道,除雪车可以单向清除一条道路的一条行车道上的积雪,并且除雪车可以在任意一个路口改变方向(包括U形转弯),同时在任意一条道路的尽头可以掉头(U形)到另一条行车道行驶。
    除雪车在除雪时以20km/h的速度行驶,在积雪已经被清除的车道上则以50km/h的速度行驶。
    现请你计算,除雪车清理完所有道路的所有车道,并且最后回到车库最少需要多长时间?

    输入格式

    输入的第一行包含两个整数x和y,表示停放除雪车的车库的坐标。
    接下来若干行,每行输入四个实数x1,y1,x2,y2,表示某条道路的起始点坐标,所有道路均为直路。
    车库的坐标一定位于某条道路的线段上。
    输入中的所有坐标单位均为米。

    输出

    输出除雪车清理完所有道路的所有车道,并且最后回到车库最少需要多长时间,格式为hh:mm,结果将秒四舍五入到分。

    样例输入

    0 0
    0 0 10000 10000
    5000 -10000 5000 10000
    5000 10000 10000 10000

    样例输出

    03:55

    怎样才是最短呢?

      一条道分两行,清理到尽头可以跳跃到另一条道清理,最少时间就是清理完雪就回到原点,清理时要记得是清理两行的积雪

     1 #include<stdio.h>
     2 #include<math.h>
     3 
     4 int main()
     5 {
     6         double x1,y1,x2,y2,s=0,t;
     7         int m;
     8         scanf("%*d%*d");
     9         while(scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2)!=EOF)
    10                 s+=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
    11         t=s/20000*2;
    12         m=(t-(int)t)*60+0.5;
    13         if(m==60)
    14                 printf("%02d:00
    ",(int)t+1);
    15         else
    16                 printf("%02d:%02d
    ",(int)t,m);
    17         return 0;
    18 }
  • 相关阅读:
    基于Qt的图像处理技术和算法
    项目中使用到的算法
    C++将数组的元素顺序随机打乱
    Windows环境下 RabbitMQ集群配置
    Nginx负载均衡配置
    SQL Server Profiler:使用方法和指标说明
    如何查看IIS并发连接数
    23种设计模式的趣味理解
    C# 开源框架(整理)
    git 简易教程
  • 原文地址:https://www.cnblogs.com/sairre/p/3952480.html
Copyright © 2011-2022 走看看