• Codeforces 985A 题解


    题意

    有一个长度为(n)((n)为偶数)的棋盘,黑白相间,类似于BWBW...BW.现有(n/2)个位置有棋子,每次只能向左或向右移动一个棋子一步,棋子不能重叠或移出棋盘.求最少要用多少次才能使所有棋子所在的格子颜色相同.

    题解

    显然只有两种方案:(1,3,5,cdots,n-1)(2,4,6,cdots,n).因为不能越过其他棋子,所以移动步数确定.那么直接讨论两种情况即可.

    代码

    #include <cstdio>
    #include <cstdlib>
    #include <cctype>
    #include <algorithm>
    using namespace std;
    #define gc getchar
    inline void read(int &x){ // 读入优化
        register bool f;
        register char ch;
        for (f = false, ch = gc(); !isdigit(ch); ch = gc()) if (ch == '-') f = true;
        for (x = 0; isdigit(ch); ch = gc()) x = ((x + (x << 2)) << 1) + (ch ^ '0');
        if (f) x = -x;
    }
    const int N = 105;
    int n, a[N], s1, s2;
    inline int abs(int x){ // 求x的绝对值
        return x > 0 ? x : -x;
    }
    int main(){
        read(n), n >>= 1;
        for (register int i = 1; i <= n; ++i) read(a[i]);
        sort(a + 1, a + 1 + n); // 排序,最左边的棋子一定是移动到最左边的黑/白格子的.
        for (register int i = 1; i <= n; ++i)
            s1 += abs(a[i] - ((i << 1) - 1)), s2 += abs(a[i] - (i << 1));
        // s1表示第一种情况,s2表示第二种情况
        return printf("%d", s1 < s2 ? s1 : s2), 0;
    }
    
  • 相关阅读:
    L317 电子烟
    L316 波音737Max 危机
    2.19.3月 专业综合错题
    L314 单音节词读音规则(二)-元音字母发音规则
    L313 珊瑚裸鼠灭绝
    L312 难看懂的
    Pycharm写代码中文输入法不跟随
    Windows下Python多版本共存
    Python之批处理字符串(打开文件)
    Python Url请求代码
  • 原文地址:https://www.cnblogs.com/rill7747/p/9094104.html
Copyright © 2020-2023  润新知