阿里笔试4.10(菜鸡求助)
哦豁,完蛋!本菜鸡发誓等考完语言一定好好学习敲代码!
第一题挺简单的,题目大概是这样的:给你一堆点的坐标,让你求一个值,这个值到所有点的横坐标距离之和最短。俺搅得好像要用二分法找吧,不然步长为1那么找会超时(过0.3),俺不太会写二分法(没错这么基本的东西竟然都写不出来)……就编了四十多分钟也没编出来(但感觉大概差不多了吧,没时间提交了)
第二题看都没看因为俺知道俺大概是做不出来的……
附第一题超时的代码,只过了0.3,欢迎大佬们在评论区贴代码给俺摩拜一下下🤗
#include<iostream> #include<vector> #include<cmath> using namespace std; int main() { long n; cin >> n; vector<vector<long>> v(n, vector<long>(2)); for (int i = 0; i < n; i++) { cin >> v[i][0] >> v[i][1]; } long xmax = 0, xmin = 100000; for (int i = 0; i < n; i++) { if (v[i][0] < xmin) xmin = v[i][0]; } for (int i = 0; i < n; i++) { if (v[i][0] > xmax) xmax = v[i][0]; } long x, sum, ans; for (int x = xmin; x <= xmax; x++) { sum = 0; for (int i = 0; i < n; i++) { sum += abs(v[i][0] - x); } if (x == xmin) ans = sum; else { if (ans > sum) ans = sum; } } cout << ans; return 0; }