CF985A Chess Placing【思维】

【链接】:CF985A
【题意】:给你n和n/2个数ai,每个ai和奇数、偶数比较距离(注意选了奇数,偶数的距离就不要算了,反之同理),求最小的答案。
【代码】:

#include <iostream>
#include<queue>
#include<string.h>
#include<bits/stdc++.h>
using namespace std;
#define N 100010
#define M 2005
const int  INF =  0x3f3f3f3f;
#define rep(i,a,b) for(int i=(a); i<(b); i++)
#define ll long long
int n,m,x,y;
int a[120];
int main()
{
    int ans=0,x=0,y=0;
    scanf("%d",&n);
    n/=2;
    for(int i=1;i<=n;i++)
        scanf("%d",&a[i]);
    sort(a+1,a+n+1); //必须排序QAQ
    for(int i=1;i<=n;i++)
    {
        x += abs(2*i-1 - a[i]);
        y += abs(2*i - a[i]);
        //printf("odd=%d even=%d ai=%d\n",2*i-1,2*i,a[i]);
        //printf("%d %d\n",2*i-1 - a[i], 2*i - a[i]);
    }
    //printf("x=%d y=%d\n",x,y);
    printf("%d\n",min(x,y));
}

posted @ 2018-05-31 18:08  Roni_i  阅读(211)  评论(0编辑  收藏  举报