主页 > 互联网  > 

备战蓝桥杯:贪心算法之货仓选址

备战蓝桥杯:贪心算法之货仓选址

当我们货仓选址在最中间的时候,货仓到每家商店的距离最短

#include <iostream> #include <cstdlib> #include <algorithm> typedef long long LL; using namespace std; int n; const int N = 1e5+10; LL a[N]; int main() { cin >> n; for(int i = 1;i<=n;i++) cin >> a[i]; sort(a+1,a+1+n); LL ret= 0; for(int i = 1;i<=n;i++) ret+=abs(a[i]-a[n/2]); cout << ret << endl; return 0; }

贪心策略证明:

我们首先需要直到一个绝对值不等式的公式

|a-x|+|b-x| >= |a-b|

我们的代码也可以直接用这个公式来算

#include <iostream> #include <cstdlib> #include <algorithm> typedef long long LL; using namespace std; int n; const int N = 1e5+10; LL a[N]; int main() { cin >> n; for(int i = 1;i<=n;i++) cin >> a[i]; sort(a+1,a+1+n); LL ret= 0; for(int i = 1;i<=n/2;i++) ret+=abs(a[n-i+1]-a[i]); cout << ret << endl; return 0; }

标签:

备战蓝桥杯:贪心算法之货仓选址由讯客互联互联网栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“备战蓝桥杯:贪心算法之货仓选址