zoukankan      html  css  js  c++  java
  • 网易编程题目 02 赶去公司

     赶去公司

    终于到周末啦!小易走在市区的街道上准备找朋友聚会,突然服务器发来警报,小易需要立即回公司修复这个紧急bug。假设市区是一个无限大的区域,每条街道假设坐标是(X,Y),小易当前在(0,0)街道,办公室在(gx,gy)街道上。小易周围有多个出租车打车点,小易赶去办公室有两种选择,一种就是走路去公司,另外一种就是走到一个出租车打车点,然后从打车点的位置坐出租车去公司。每次移动到相邻的街道(横向或者纵向)走路将会花费walkTime时间,打车将花费taxiTime时间。小易需要尽快赶到公司去,现在小易想知道他最快需要花费多少时间去公司。

    输入描述:

    输入数据包括五行:
    第一行为周围出租车打车点的个数n(1 ≤ n ≤ 50)
    第二行为每个出租车打车点的横坐标tX[i] (-10000 ≤ tX[i] ≤ 10000)
    第三行为每个出租车打车点的纵坐标tY[i] (-10000 ≤ tY[i] ≤ 10000)
    第四行为办公室坐标gx,gy(-10000 ≤ gx,gy ≤ 10000),以空格分隔
    第五行为走路时间walkTime(1 ≤ walkTime ≤ 1000)和taxiTime(1 ≤ taxiTime ≤ 1000),以空格分隔

    输出描述:

    输出一个整数表示,小易最快能赶到办公室的时间

    输入例子1:
    2
    -2 -2
    0 -2
    -4 -2
    15 3
    输出例子1:
    42

     1 #include "stdafx.h"
     2 #include<iostream>
     3 #include<vector>
     4 #include<map>
     5 #include<algorithm>
     6 #include<string>
     7 #include<cmath>
     8 using namespace std;
     9 
    10 int Wal, Tex;
    11 int getT(int x, int y, int rx, int ry)
    12 {
    13     // 计算走到车站的时间
    14     int wa = (abs(x) + abs(y))*Wal;
    15     // 计算车站到公司的时间
    16     int te = (abs(rx - x) + abs(ry - y))*Tex;
    17     // 返回总花费时间
    18     return wa + te;
    19 }
    20 
    21 // 主函数
    22 int main()
    23 {
    24     int n;
    25     int tx[51];
    26     int ty[51];
    27     int com[2];
    28     //int wal, tex;
    29     cin >> n;
    30     int i = 0;
    31     while (i != n) 
    32     {
    33         cin >> tx[i++];
    34     }
    35     i = 0;
    36     while (i != n)
    37     {
    38         cin >> ty[i++];
    39     }
    40     cin >> com[0] >> com[1];
    41     cin >> Wal >> Tex;
    42     //Wal = wal;
    43     //Tex = tex;
    44 
    45     // 直接步行的时间
    46     int walktime = (abs(com[0]) + abs(com[1]))*Wal;
    47 
    48 
    49     ////// 循环处理从每一个车站乘车去公司的时间
    50     ////int t = 2147483647;
    51     ////for (int i = 0; i < n; i++)
    52     ////{
    53     ////    // 计算每一个车站乘车的总时间
    54     ////    int temp = getT(tx[i], ty[i], com[0], com[1]);
    55     ////    // 判断是否是最小时间
    56     ////    if (temp < t)
    57     ////    {
    58     ////        t = temp;
    59     ////    }
    60     ////}
    61     ////cout << (t<walktime ? t : walktime) << endl;
    62 
    63 
    64     ////// 循环处理从每一个车站乘车去公司的时间
    65     int temp = walktime;
    66     for (int i = 0; i < n; ++i)
    67     {
    68         int T = getT(tx[i], ty[i], com[0], com[1]);
    69         if (T < temp) temp = T;
    70     }
    71     cout << temp << endl;
    72     return 0;
    73 }

    方法二 

     1 #include "stdafx.h"
     2 
     3 # include <iostream>
     4 # include <vector>
     5 # include <Algorithm>
     6 # include <cmath>
     7 using namespace std;
     8 int main()
     9 {
    10     int n = 0, gx = 0, gy = 0, walkTime = 0, taxiTime = 0, tx_time = 0;
    11     cin >> n;
    12     vector<int> tx(n), ty(n);
    13     for (int i = 0; i<n; i++) {
    14         cin >> tx[i];
    15     }
    16     for (int i = 0; i<n; i++) {
    17         cin >> ty[i];
    18     }
    19     cin >> gx >> gy >> walkTime >> taxiTime;
    20 
    21     int total_walkTime = (abs(gx) + abs(gy))*walkTime;
    22     int total_taxiTime = INT_MAX;
    23     for (int i = 0; i<n; i++) {
    24         tx_time = (abs(tx[i]) + abs(ty[i]))*walkTime + (abs(gx - tx[i]) + abs(gy - ty[i]))*taxiTime;
    25         total_taxiTime = min(total_taxiTime, tx_time);
    26     }
    27     int time = min(total_walkTime, total_taxiTime);
    28     cout << time;
    29     return 0;
    30 }


  • 相关阅读:
    python openpyxl 封装Execl常用操作的方法
    python webdriver grid多节点运行webdriver程序
    url的正则表达式
    基于Erlang VM的函数式编程语言Elixir
    [整理]团队开发效率提升探索一
    FreeBSD应该装gnome3做桌面
    FreeBSD pkg仓库有台湾的镜像了
    再探OAuth2
    【转】Android世界的Swift
    内存只有4G的MBP要怎么破
  • 原文地址:https://www.cnblogs.com/D-DZDD/p/7349089.html
Copyright © 2011-2022 走看看