hdu 4311 Meeting point-1
来源:互联网 发布:奥巴马 知乎 编辑:程序博客网 时间:2024/04/19 17:33
排序后用O(n)时间枚举
#include<iostream>#include<vector>#include<algorithm>#include<cstdio>#include<queue>#include<stack>#include<string>#include<map>#include<set>#include<cassert>#include<cstring>#include<iomanip>using namespace std;#ifdef _WIN32typedef __int64 i64;#define out64 "%I64d\n"#define in64 "%I64d"#elsetypedef long long i64;#define out64 "%lld\n"#define in64 "%lld"#endif/************ for topcoder by zz1215 *******************/#define FOR(i,a,b) for( int i = (a) ; i <= (b) ; i ++)#define FFF(i,a) for( int i = 0 ; i < (a) ; i ++)#define FFD(i,a,b) for( int i = (a) ; i >= (b) ; i --)#define S64(a) scanf(in64,&a)#define SS(a) scanf("%d",&a)#define LL(a) ((a)<<1)#define RR(a) (((a)<<1)+1)#define pb push_back#define CL(Q) while(!Q.empty())Q.pop()#define MM(name,what) memset(name,what,sizeof(name))#define read freopen("in.txt","r",stdin)#define write freopen("out.txt","w",stdout)const int inf = 0x3f3f3f3f;const i64 inf64 = 0x3f3f3f3f3f3f3f3fLL;const double oo = 10e9;const double eps = 10e-9;const int maxn = 100011;struct zz{i64 x;i64 y;int id;}zx;i64 n;i64 fx[maxn];i64 fy[maxn];i64 sum[maxn];inline bool cmpx(const zz & a,const zz & b) {return a.x<b.x;} inline bool cmpy(const zz & a,const zz & b) {return a.y<b.y;}vector<zz>v;void findx(){sort(v.begin(),v.end(),cmpx);i64 temp;for(int i=1;i<v.size();i++){fx[i] += fx[i-1];temp = v[i].x-v[i-1].x;temp *= i;fx[i] += temp;sum[v[i].id]+=fx[i];}for(int i=1;i<=n;i++){fx[i]=0;}int cnt = v.size()-1;for(int i=cnt-1;i>=0;i--){fx[i] += fx[i+1];temp = v[i+1].x-v[i].x;temp *= (cnt - i);fx[i] += temp;sum[v[i].id]+=fx[i];}return ;}void findy(){sort(v.begin(),v.end(),cmpy);i64 temp;for(int i=1;i<v.size();i++){fy[i] += fy[i-1];temp = v[i].y-v[i-1].y;temp *= i;fy[i] += temp;sum[v[i].id]+=fy[i];}for(int i=1;i<=n;i++){fy[i]=0;}int cnt = v.size()-1;for(int i=cnt-1;i>=0;i--){fy[i] += fy[i+1];temp = v[i+1].y-v[i].y;temp *= (cnt - i);fy[i] += temp;sum[v[i].id]+=fy[i];}return ;}i64 start(){findx();findy();i64 ans = inf64;for(int i=1;i<=n;i++){if(sum[i]<ans){ans=sum[i];}}return ans;}int main(){int T;cin>>T;while(T--){cin>>n;v.clear();for(int i=0;i<=n;i++){fx[i]=0;fy[i]=0;sum[i]=0;}for(int i=1;i<=n;i++){cin>>zx.x>>zx.y;zx.id = i;v.pb(zx);}cout<<start()<<endl;}return 0;}
- HDU 4311 Meeting point-1
- hdu 4311 Meeting point-1
- hdu 4311 Meeting point-1
- HDU 4311 Meeting point-1
- HDU 4311Meeting point-1
- hdu 4311 Meeting point-1 #manhattan距离
- hdu - 4311 - Meeting point-1 - 想法题
- hdu 4311 Meeting point-1(3级)
- hdu 4311 - Meeting point-1(预处理)
- HDU 4311 Meeting point-1 简单几何
- HDU 4311 Meeting point-1 (思维)
- HDU 4311——Meeting point-1(暴力)
- HDU 4311 Meeting point-1 && HDU 4312 Meeting point-2 曼哈顿距离 与 切比雪夫距离
- HDOJ-4311 Meeting point-1
- hdu 4312 Meeting point-2
- 水题:meeting point-1
- Meeting point-1
- HDU 4311&2 Meeting point-1&2(曼哈顿距离&&切比雪夫距离)
- GPRS管理与创建APN拨号连接
- freemarker的序列和哈希表
- cocos2d-x学习笔记 -- 游戏存档,切换高清,图片处理
- numa
- 遍历repeater里控件的值
- hdu 4311 Meeting point-1
- EMV-处理流程
- C#.NET 中的类型转换和进制转换
- windows下搭建objective-C环境
- Spring MethodBeforeAdvice使用例子
- 我的ios开发笔记
- hdu 4318 Power transmission
- hdu 4310
- Enum类型