zoukankan      html  css  js  c++  java
  • $Poj1723/AcWing123 Soldiers$ 排序

    $Poj$ $AcWing$

    $Description$

    $Sol$

    分别处理$x$坐标和$y$坐标.$y$坐标显然很好处理,就是排个序然后取中位数就好了.$x$没有$y$那么直接叭.所以我首先写了个大暴力$ovo$,居然过了$AcWing$(太水了).当然过不了$Poj$.所以再观察一下,发现对于枚举的一个$x$作为一条平行线的左端点的$x$值,排序后,累计答案为$as+=abs(x[i]-(x+i-1))$,整理一下,$as+=abs((x[i]-i+1)-x)$,发现被减数是一定的,于是现在和$y$的情况是一样的辣.$over.$

    $Code$

    //#include<bits/stdc++.h>
    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #define il inline
    #define Rg register
    #define go(i,a,b) for(Rg int i=a;i<=b;++i)
    #define yes(i,a,b) for(Rg int i=a;i>=b;--i)
    #define mem(a,b) memset(a,b,sizeof(a))
    #define ll long long
    #define db double
    #define inf (1<<30)
    using namespace std;
    il int read()
    {
        Rg int x=0,y=1;char c=getchar();
        while(c<'0'||c>'9'){if(c=='-')y=-1;c=getchar();}
        while(c>='0'&&c<='9'){x=(x<<1)+(x<<3)+c-'0';c=getchar();}
        return x*y;
    }
    const int N=10010;
    int n,x[N],y[N];
    ll as=inf;
    int main()
    {
        n=read();go(i,1,n)x[i]=read(),y[i]=read();
        sort(x+1,x+n+1);sort(y+1,y+n+1);
        go(i,x[1]-n+1,x[n])
        {
            ll qvq=0;
            go(j,1,n)qvq+=abs(x[j]-(i+j-1));
            as=min(as,qvq);
        }
        go(i,1,n)as+=abs(y[i]-y[n/2+1]);
        printf("%lld
    ",as);
        return 0;
    }
    View 暴力 Code
    //#include<bits/stdc++.h>
    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #define il inline
    #define Rg register
    #define go(i,a,b) for(Rg int i=a;i<=b;++i)
    #define yes(i,a,b) for(Rg int i=a;i>=b;--i)
    #define mem(a,b) memset(a,b,sizeof(a))
    #define ll long long
    #define db double
    #define inf (1<<30)
    using namespace std;
    il int read()
    {
        Rg int x=0,y=1;char c=getchar();
        while(c<'0'||c>'9'){if(c=='-')y=-1;c=getchar();}
        while(c>='0'&&c<='9'){x=(x<<1)+(x<<3)+c-'0';c=getchar();}
        return x*y;
    }
    const int N=10010;
    int n,x[N],y[N];
    ll as;
    int main()
    {
        n=read();go(i,1,n)x[i]=read(),y[i]=read();
        sort(x+1,x+n+1);sort(y+1,y+n+1);
        go(i,1,n)x[i]-=i;sort(x+1,x+n+1);
        go(i,1,n)as+=abs(y[i]-y[n/2+1])+abs(x[i]-x[n/2+1]);
        printf("%lld
    ",as);
        return 0;
    }
    View AC Code
    光伴随的阴影
  • 相关阅读:
    肥胖儿筛选标准
    文章索引
    面向对象66原则
    [精]Xpath路径表达式
    [精]XPath入门教程
    孕产期高危因素
    “华而不实”的转盘菜单(pie menu)
    xmind用例导excel用例,然后再用python排版
    NSObject
    [self class]与[super class]
  • 原文地址:https://www.cnblogs.com/forward777/p/11381158.html
Copyright © 2011-2022 走看看