[思维]牛客编程巅峰赛S1第6场

-----> C思路没错,下标写错了,recheck is necessary

A 简单题

 

 

class Solution {
public:
    /**
     * 位移后二进制串的十进制值
     * @param str string字符串 二进制字符串
     * @param k int整型 循环位移次数
     * @return long长整型
     */
    long long rotateRight(string str, int k) {
        // write code here
        long long ret = 0;
        for(int i = str.length() - k; i < str.length(); ++i) {
            ret = ret * 2 + (str[i] - '0');
        }
        for(int i = 0; i < str.length() - k; ++i) {
            ret = ret * 2 + (str[i] - '0');
        }
        return ret;
    }
};

 

B 简单思维,用SET收敛非奇即可

 

 

class Solution {
public:
    /**
     * 返回一个数,代表让这些数都变成奇数的最少的操作次数
     * @param n int整型 代表一共有多少数
     * @param a int整型vector 代表n个数字的值
     * @return int整型
     */
    int solve(int n, vector<int>& a) {
        // write code here
        set <int> ST;
        for(auto x : a) {
            if(x % 2 == 0) {
                ST.insert(x);
            }
        }
        int ret = 0;
        while(!ST.empty()) {
            auto x = --ST.end();
            ++ret;
            if ( (*x) >> 1 & 1) {
                ST.erase(x);
                continue;
            } else {
                ST.erase(x);
                ST.insert((*x) >> 1);
            }
        }
        return ret;
    }
};

 

C  简单构造,排反序后交叉排列即可

 

 

class Solution {
public:
    /**
     * ​返回按照这些花排成一个圆的序列中最小的“丑陋度”
     * @param n int整型 花的数量
     * @param array int整型vector 花的高度数组
     * @return int整型
     */
    int solve(int n, vector<int>& arr) {
        // write code here
        sort(arr.rbegin(), arr.rend());
        deque<int> dq;
        for(int i = 0; i < arr.size(); ++i) {
            if(i & 1) {
                dq.push_back(arr[i]);
            } else {
                dq.push_front(arr[i]);
            }
        }
        int ans = 0;
        for(int i = 1; i < n; ++i) {
            ans = max(ans, std::abs(dq[i] - dq[i - 1]));
        }
        ans = max(ans, std::abs(dq[0] - dq[n - 1]));
        return ans;
    }
};

 

posted @ 2020-07-25 23:12  张浦  阅读(166)  评论(0编辑  收藏  举报