题解 | #牛牛的分配#

牛牛的分配

http://www.nowcoder.com/practice/a1eafeb5a7764a43bd3251ed572d90c4

题意

长度为 的数组,每次可以选择若干元素使元素的值变为这些元素的和的平均值
给出数组和数字 ,求经过操作数组中最多有多少数字不小于

解法1:暴力

如果有一堆元素不小于 ,那它们的平均值一定不小于 。可以枚举所有子集,分别计算平均值。

代码

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 最多有多少数字不小于x
     * @param n int整型 
     * @param x int整型 
     * @param a int整型vector 
     * @return int整型
     */
    int arrange(int n, int x, vector<int>& a) {
        // write code here
        int ret=0;
        for(int s=1; s<(1<<n); ++s){ // 枚举子集
            long long sum=0;
            int cnt=0;
            for(int i=0; i<n; ++i){
                if(s&(1<<i)){
                    sum+=a[i];
                    ++cnt;
                }
            }
            if(sum>=1ll*cnt*x) ret=max(ret, cnt);
        }
        return ret;
        return n;
    }
};

复杂度分析

空间复杂度:不需要额外空间,
时间复杂度:枚举子集并统计,对每个子集需要扫描所有元素进行统计,

解法2:排序

只需要看最大的一部分元素的平均值即可。
可以将元素从小到大排序,从后往前统计后缀和,依次检验后缀平均值是否小于 。最后一个不小于 的后缀长度即为答案。
图片说明

代码

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 最多有多少数字不小于x
     * @param n int整型 
     * @param x int整型 
     * @param a int整型vector 
     * @return int整型
     */
    int arrange(int n, int x, vector<int>& a) {
        // write code here
        sort(a.begin(), a.end());
        long long sum=0;
        for(int i=n-1; i>=0; --i){
            sum+=a[i];
            if(sum<1ll*x*(n-i)) return n-i-1;
        }
        return n;
    }
};

复杂度分析

空间复杂度
时间复杂度

全部评论

相关推荐

点赞 评论 收藏
分享
牛客21331815...:像我一投就pass,根本不用焦虑泡池子
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# 你的mentor是什么样的人? #
4588次浏览 33人参与
# 你觉得mentor喜欢什么样的实习生 #
10776次浏览 297人参与
# 平安产险科技校招 #
2434次浏览 0人参与
# 帮我看看,领导说这话什么意思? #
6729次浏览 28人参与
# 26届秋招公司红黑榜 #
13421次浏览 44人参与
# 怎么给家人解释你的工作? #
1748次浏览 17人参与
# 智慧芽求职进展汇总 #
26075次浏览 110人参与
# 没有家庭托举的我是怎么找工作的 #
12806次浏览 161人参与
# 求职低谷期你是怎么度过的 #
5470次浏览 97人参与
# 实习必须要去大厂吗? #
146898次浏览 1542人参与
# 从哪些方向判断这个offer值不值得去? #
6825次浏览 95人参与
# 同bg的你秋招战况如何? #
158912次浏览 927人参与
# 度小满求职进展汇总 #
10248次浏览 53人参与
# 校招泡的最久的公司是哪家? #
4894次浏览 23人参与
# 面试紧张时你会有什么表现? #
1811次浏览 21人参与
# 你有哪些缓解焦虑的方法? #
37215次浏览 835人参与
# 你喜欢工作还是上学 #
77633次浏览 860人参与
# 入职第一天,你准备什么时候下班 #
85528次浏览 467人参与
# 秋招想进国企该如何准备 #
97761次浏览 487人参与
# 简历无回复,你会继续海投还是优化再投? #
103636次浏览 819人参与
# 机械人的工作环境真的很差吗 #
25100次浏览 119人参与
# 独居后,你的生活是更好了还是更差了? #
28161次浏览 263人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务