http://acm.hdu.edu.cn/showproblem.php?pid=4311
思维呀 亲 你想到就可以做出来 想不到就做不出了 什么都不说了 上代码
不知道为什么 在hdu 上 long long 和 int 相乘就让我错
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<map>
#include<queue>
#include<cmath>
#define LL long longusing namespace std;
const int N=100005;struct node
{int I;LL x,y;
}mem[N];
LL l[N];
LL sumx[N];
LL sumy[N];
bool cmp1(node a,node b)
{return a.x<b.x;
}
bool cmp2(node a,node b)
{return a.y<b.y;
}
int main()
{int T;scanf("%d",&T);while(T--){int n;scanf("%d",&n);for(int i=1;i<=n;++i){cin>>mem[i].x>>mem[i].y;mem[i].I=i;}sort(mem+1,mem+n+1,cmp1);l[0]=0;for(int i=1;i<=n;++i){l[i]=l[i-1]+mem[i].x;}for(int i=1;i<=n;++i){sumx[mem[i].I]=((i-1)*mem[i].x-l[i-1])+((l[n]-l[i])-(n-i)*mem[i].x);}sort(mem+1,mem+n+1,cmp2);l[0]=0;for(int i=1;i<=n;++i){l[i]=l[i-1]+mem[i].y;}for(int i=1;i<=n;++i){sumy[mem[i].I]=((i-1)*mem[i].y-l[i-1])+((l[n]-l[i])-(n-i)*mem[i].y);}LL ans=sumx[1]+sumy[1];for(int i=2;i<=n;++i){if(sumx[i]+sumy[i]<ans)ans=sumx[i]+sumy[i];}cout<<ans<<endl;}return 0;
}