• 计蒜客蓝桥杯模拟赛:轻重搭配:贪心


    问题描述

    n 个同学去动物园参观,原本每人都需要买一张门票,但售票处推出了一个优惠活动,一个体重为 x 的人可以和体重至少为 2x 配对,这样两人只需买一张票。现在给出了 n 个人的体重,请你计算他们最少需要买几张门票?

    输入格式

    第一行一个整数 n,表示人数。

    第二行 n 个整数,每个整数 ai 表示每个人的体重。

    输出格式

    一个整数,表示最少需要购买的门票数目。

    数据范围

    对于 30% 的数据:1 n25,1ai100。

    对于 60% 的数据:1 n10000,1ai1000。

    对于 100% 的数据:1 n510^5,1ai10^5。

    样例解释

    1 和 9 配对,7 和 3 配对,剩下 5,5 单独,一共买四张票。

    样例输入

    6

    1 9 7 3 5 5

    样例输出

    4

    题目来源

    2019 蓝桥杯省赛 B 组模拟赛(一)

    输入后先排序,最少的情况就是全部可以配对,那只能排序后的前一半和后一半配对,所以直接从中间开始枚举就可以。

    #include <bits/stdc++.h>
    using namespace std;
    int  a[500010],cnt;
    
    int main() {
        ios::sync_with_stdio(false);
        cin.tie(0); cout.tie(0);
        int n;
        cin >> n;
        cnt=n;
        for (int i = 0; i < n; i++)
        {
            cin >> a[i];
        }
        sort(a, a + n);
        int l = n/2-1,r=n-1;
        while(l>=0){
            if(a[r]>=a[l]*2){
                cnt--;
                r--;
                l--;
            }
            else
                l--;
        }
        cout << cnt << "
    ";
        return 0;
    }
    

      

  • 相关阅读:
    phpcms v9模板制作常用代码集合
    phpcms v9模板制作教程
    cookie 和session 的区别
    PHP的加密方式
    php基础
    复习 语句
    empty 和 isset的区别和联系
    MySQL数据库引擎介绍、区别、创建和性能测试的深入分析
    ThinkPHP增删改查--改
    使用ajax提交form表单,包括ajax文件上传
  • 原文地址:https://www.cnblogs.com/52dxer/p/10352903.html
Copyright © 2020-2023  润新知