https://www.luogu.org/problemnew/show/P1708
这道题还是比较好的。
读完题目我们先想想如何计算某个天然气井($x_1,y_1$)和中转站($a_1,b_1$)的距离.
$$dis=abs(x_1-x_2)+abs(a_1-b_2)$$
那么现在再想一下对于每一个天然气井都有一个中转站,那么
$$ans=sum_{i=1}^n(x_i-a_i)+(y_i-b_i) $$
可以变为$$left| sum_{i=1}^nx_i-sum_{i=1}^na_i ight|+left| sum_{i=1}^ny_i-sum_{i=1}^nb_i ight|$$
#include <algorithm> #include <iostream> #include <cstring> #include <cstdio> #define LL long long using namespace std; LL n,ansx,ansy; int main() { LL x,y; scanf("%d",&n); for(int i=1;i<=n;i++)scanf("%lld%lld",&x,&y),ansx+=x,ansy+=y; for(int i=1;i<=n;i++)scanf("%lld%lld",&x,&y),ansx-=x,ansy-=y; printf("%lld",abs(ansx)+abs(ansy)); }