赶去公司
终于到周末啦!小易走在市区的街道上准备找朋友聚会,突然服务器发来警报,小易需要立即回公司修复这个紧急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 }