zoukankan      html  css  js  c++  java
  • b_lc_心算挑战(排序+贪心)

    选手从 N 张卡牌中选出 cnt 张卡牌,若这 cnt 张卡牌数字总和为偶数,则选手成绩「有效」且得分为 cnt 张卡牌数字总和。 请帮参赛选手计算最大的有效得分 n,cnt<1e5

    思路:贪心就是指尽可能拿大的数;奇数肯定只能不拿/拿两个,偶数随便拿大的就行

    class Solution {
    public:
        int maxmiumScore(vector<int>& A, int cnt) {
            vector<int> odd = {0}, even = {0};
    
            for (const auto &item : A) {
                if (item % 2 == 0) {
                    even.push_back(item);
                } else {
                    odd.push_back(item);
                }
            }
            sort(even.begin() + 1, even.end(), greater<int>());
            sort(odd.begin() + 1, odd.end(), greater<int>());
    
            for (int i = 1; i < odd.size(); ++i) {
                odd[i] += odd[i-1];
            }
            for (int i = 1; i < even.size(); ++i) {
                even[i] += even[i-1];
            }
            int ans = 0;
    
            for (int i = 0; i <= cnt; i += 2) {
                int oddSize = i, evenSize = cnt - i;
                if (oddSize >= odd.size() || evenSize >= even.size()) {
                    continue;
                }
                ans = max(ans, odd[oddSize] + even[evenSize]);
            }
            return ans;
        }
    };
    
  • 相关阅读:
    杭电ACM 2052 Picture
    杭电ACM求平均成绩
    杭电ACM水仙花数
    cigarettes
    分数加减法
    推荐几个sql server牛人的博客
    npm 介绍
    centos Flash Player插件的安装
    node.js学习(1)
    查询功能:yum [list|info|search|provides|whatprovides] 参数
  • 原文地址:https://www.cnblogs.com/wdt1/p/15256801.html
Copyright © 2011-2022 走看看