• hdu 4431 绝对值之和最小公式


    /*
    普通的二分不好写,反正我没写出来,这题核心需要求出绝对值最小公式
    sum=|x+10|+|x+5|+|x+1|+|x-2|+|x-6|;sumx[1]=-10;sumx[2]=-15;sumx[3]=-16;sumx[4]=-14;sumx[5]=-8;   
    对于第3个点sum=(-1)*3-sumx[3]+sum[5]-sum[3]-(-1)*(5-3);
    按照这样就可以直接得到一个点的横纵坐标与其他点的距离和了
    */
    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    #define N  110000
    #define inf 0x3fffffff
    struct node {
    int x,y;
    }f[N];
    int x[N],suma[N];
    int y[N],sumb[N];
    int cmp(const void *a,const void *b) {
    return *(int *)a-*(int *)b;
    }
    int n;
    int seach(int a[N],int u) {
    int st=1,en=n,mid;
      while(st<=en) {
        mid=(st+en)/2;
        if(a[mid]==u)return mid;
        if(a[mid]>u)
            en=mid-1;
        else
            st=mid+1;
      }
      return st;
    }
    int main() {
        int t,i,maxx;
        int xx,yy,sumx,sumy;
        scanf("%d",&t);
        while(t--) {
            scanf("%d",&n);
            for(i=1;i<=n;i++) {
                scanf("%d%d",&f[i].x,&f[i].y);
                x[i]=f[i].x;
                y[i]=f[i].y;
            }
            suma[0]=0;sumb[0]=0;
            qsort(x+1,n,sizeof(x[0]),cmp);
            qsort(y+1,n,sizeof(y[0]),cmp);
            for(i=1;i<=n;i++) {
                suma[i]=suma[i-1]+x[i];
                sumb[i]=sumb[i-1]+y[i];
            }
            maxx=inf;
            for(i=1;i<=n;i++) {
                xx=seach(x,f[i].x);
                yy=seach(y,f[i].y);
                sumx=xx*x[xx]-suma[xx]+suma[n]-suma[xx]-x[xx]*(n-xx);//
                sumy=yy*y[yy]-sumb[yy]+sumb[n]-sumb[yy]-y[yy]*(n-yy);
                //printf("%d %d
    ",sumx,sumy);
                if(maxx>sumx+sumy)
                    maxx=sumx+sumy;
            }
            printf("%d
    ",maxx);
        }
    return 0;}
    

  • 相关阅读:
    链表
    Wonder团队承接各种Web3D业务
    真我的信息
    一个人独自做长期项目,如何提高工作效率?
    【Java】类的结构
    【长知识】找书攻略
    【长知识】语义化版本控制
    【Java】Debug调试常用技巧
    【Web】Servlet三大作用域、JSP四大作用域
    【Web】Servlet基本概念
  • 原文地址:https://www.cnblogs.com/thefirstfeeling/p/4410565.html
Copyright © 2020-2023  润新知