标签:
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 3426 Accepted Submission(s): 1131
1 #include<bits/stdc++.h> 2 using namespace std; 3 #define MAXN 100010 4 #define INF 10000000000000000LL 5 #define LL long long 6 LL qx[MAXN],qy[MAXN],qx1[MAXN],qy1[MAXN]; 7 LL ans[MAXN]; 8 struct node 9 { 10 int a,id; 11 }x[MAXN],y[MAXN]; 12 int read() 13 { 14 int s=0,fh=1;char ch=getchar(); 15 while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘)fh=-1;ch=getchar();} 16 while(ch>=‘0‘&&ch<=‘9‘){s=s*10+(ch-‘0‘);ch=getchar();} 17 return s*fh; 18 } 19 bool cmp(node aa,node bb) 20 { 21 return aa.a<bb.a; 22 } 23 int main() 24 { 25 int T,n,i; 26 LL MN,sum,sum1; 27 T=read(); 28 while(T--) 29 { 30 n=read(); 31 for(i=1;i<=n;i++){x[i].a=read(),y[i].a=read();x[i].id=i;y[i].id=i;} 32 sort(x+1,x+n+1,cmp); 33 sort(y+1,y+n+1,cmp); 34 qx[1]=0;qy[1]=0;qx1[1]=0;qy1[1]=0; 35 for(i=2;i<=n;i++) 36 { 37 qx[i]=qx[i-1]+(LL)(x[i].a-x[i-1].a); 38 qx1[i]=qx1[i-1]+qx[i]; 39 qy[i]=qy[i-1]+(LL)(y[i].a-y[i-1].a); 40 qy1[i]=qy1[i-1]+qy[i]; 41 } 42 memset(ans,0,sizeof(ans)); 43 for(i=1;i<=n;i++) 44 { 45 sum=qx[i]*(i-1)-qx1[i-1]+qx1[n]-qx1[i]-qx[i]*(n-i); 46 sum1=qy[i]*(i-1)-qy1[i-1]+qy1[n]-qy1[i]-qy[i]*(n-i); 47 ans[x[i].id]+=sum; 48 ans[y[i].id]+=sum1; 49 } 50 MN=INF; 51 for(i=1;i<=n;i++)MN=min(MN,ans[i]); 52 printf("%lld\n",MN); 53 } 54 return 0; 55 }
Hdu 4311-Meeting point-1 曼哈顿距离,前缀和
标签:
原文地址:http://www.cnblogs.com/Var123/p/5355984.html