zoukankan      html  css  js  c++  java
  • ACM训练联盟周赛 K. Teemo's reunited

    Teemo likes to drink raspberry juice.  He even spent some of his spare time tomake the raspberry juice himself. The way to make the raspberries juice is simple. You just have to press the raspberries through a fine sieve.

    Unfortunately,today Teemo was splited in several pieces by the sieve which was used to makethe raspberry juice. The pieces were losted in the huge two-dimensional map. Onlywhen all the pieces gather, can Teemo drink the raspberry juice he made today. 

    Teemo's piece can only move parallel to the x or y axis, or he would be hated by theraspberry Queen and will not be able to have raspberry juice any more. One of the piece of Teemo should carry the raspberry juice.In order to avoid spilling, this piece cannot move anymore. 

    Teemo’spiece are lazy, they’d like to make the sum of paths be the minimal. Your task is to find the minimal sum of the paths.

    InputFormat
    The first line contains a integer n (1<=n<=100000) represent the number of thepieces. Then next n lines. Each line contains the pairs of xi, yi(-1000000000<xi,yi<1000000000) in turn as points by order. 

    OutputFormat
    Printa single line contains the minimal sum of the paths. 

    样例输入1

    3
    1 0
    2 0
    3 0

    样例输出1

    2

    样例输入2

    5
    4 1
    4 4
    9 2
    2 9
    2 6

    样例输出2

    21


    //必须要先排序
    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cstdlib>
    #include <cstring>
    #include <string>
    #include <deque>
    #include <map>
    #include <vector>
    #include <stack>
    using namespace std;
    #define  ll long long 
    #define  N   100009
    #define  M 5000000000000009
    #define  gep(i,a,b)  for(int  i=a;i<=b;i++)
    #define  gepp(i,a,b) for(int  i=a;i>=b;i--)
    #define  gep1(i,a,b)  for(ll i=a;i<=b;i++)
    #define  gepp1(i,a,b) for(ll i=a;i>=b;i--)    
    #define  mem(a,b)  memset(a,b,sizeof(a))
    #define  ph  push_back
    #define  mod  1000000007
    struct Node{
        ll id,x,y;
    }nod[N];
    ll sumx[N],sumy[N],l[N],r[N];
    bool cmpx(Node a,Node b){
        return a.x<b.x;
    }
    bool cmpy(Node a,Node b)
    {
        return a.y<b.y;
    }
    ll n;
    int main()
    {
        scanf("%lld",&n);
        gep1(i,1,n) {
            scanf("%lld%lld",&nod[i].x,&nod[i].y);
            nod[i].id=i;
        }
        sort(nod+1,nod+1+n,cmpx);
        gep(i,1,n){
            sumx[i]=sumx[i-1]+nod[i].x;
        }
        ll sx=0;
        // 1 2 3 4 5 (x)
        // 3   3-1+3-2 +   4-3+5-3
        gep(i,1,n){
            sx=nod[i].x*(i-1)-sumx[i-1]+sumx[n]-sumx[i]-nod[i].x*(n-i);
            l[nod[i].id]=sx;
        }    
        sort(nod+1,nod+1+n,cmpy);    
        gep(i,1,n){
            sumy[i]=sumy[i-1]+nod[i].y;
        }
        ll sy=0;
        gep(i,1,n){
            sy=nod[i].y*(i-1)-sumy[i-1]+sumy[n]-sumy[i]-nod[i].y*(n-i);
            r[nod[i].id]=sy;//每一次的排序都会造成id的变化,id :最初那个数据在当前的位置
        }    
        ll MIN=M;
        gep(i,1,n){
            MIN=min(MIN,l[i]+r[i]);    
        }
        printf("%lld
    ",MIN);
        return 0;
    }    
  • 相关阅读:
    Liferay 6.2 改造系列之十五:修改默认可用语言
    Liferay 6.2 改造系列之十七:当Portlet无权限时,不显示错误信息
    Liferay 6.2 改造系列之十四:修改组织的表单内容
    Liferay 6.2 改造系列之十三:修改用户编辑页面表单内容
    Liferay 6.2 改造系列之十一:默认关闭CDN动态资源
    matlab向量的排序(自写函数)
    matlab求一个矩阵中各元素出现的个数(归一化)
    matlab求矩阵的鞍点
    matlab求矩阵、向量的模
    matlab求最大公约数和最小公倍数
  • 原文地址:https://www.cnblogs.com/tingtin/p/9514805.html
Copyright © 2011-2022 走看看