首页 > 编程语言 >蓝桥杯备考冲刺必刷题(C++) | 3792 小蓝的礼物

蓝桥杯备考冲刺必刷题(C++) | 3792 小蓝的礼物

时间:2024-06-17 10:33:22浏览次数:28  
标签:件物品 int 折扣 C++ mark 蓝桥 小蓝 物品 3792

学习C++从娃娃抓起!记录下蓝桥杯备考比赛学习过程中的题目,记录每一个瞬间。

附上汇总贴:蓝桥杯备考冲刺必刷题(C++) | 汇总-CSDN博客


【题目描述】
小蓝想要给她的女朋友小桥买一份生日礼物,她来到了一家礼品店。在店里,她看中了 N N N件物品,每件物品都有一个价格 A i A_i Ai​。
小蓝手中有 K K K元钱和一张50%的折扣券,可以在购买任意一件物品时使用。使用折扣券后,购买该物品的价格为原价的一半向上取整。
对于一件价值为 X X X的物品,当小蓝使用折扣券后,他只需要花费 ⌈ x 2 ⌉ \lceil \frac{x}{2} \rceil ⌈2x​⌉元即可带走该商品。
请帮助小蓝确定,在使用折扣券的情况下,她最多能够购买多少件物品送给小桥作为生日礼物。
【输入】
第一行是两个整数 N N N和 K K K,分别表示物品的数量和小蓝手中的预算。
接下来一行是 N N N个整数,表示每个物品的价格 A i A_i Ai​。
【输出】
输出一个整数,表示在使用折扣券的情况下,小蓝最多可以购买多少件物品作为生日礼物。
【输入样例】

5 10
3 1 3 4 5

【输出样例】

4

【代码详解】
[图片]

#include <bits/stdc++.h>
using namespace std;
#define int long long
int n, k, a[100005], ans;
signed main()
{
    cin >> n >> k;
    for (int i=1; i<=n; i++) {  // 输入n件物品
        cin >> a[i];
    }
    sort(a+1, a+n+1);  // 按照从小到大排序
    int mark = 1;  // 定义下标,起始为1
    while (k-a[mark]>=0 && mark<n) {  // 当手中的钱还够买a[mark]物品时,且mark不越界
        ans += a[mark];  // 总费用增加(其实不用输出总费用)
        k -= a[mark];  // 手中的钱减少
        mark++;  // 下标自增1
    }
    if (k-((a[mark]+1)/2)>=0) {  // 尝试能否用50%的折扣券买a[mark]物品(这里不用ceil,而是(a[i]+1)/2)
        cout << mark << endl;  // 输出mark
    } else {
        cout << mark-1 << endl;  // 否则输出mark-1
    }
    return 0;
}

【运行结果】

5 10
3 1 3 4 5
4

标签:件物品,int,折扣,C++,mark,蓝桥,小蓝,物品,3792
From: https://blog.csdn.net/guolianggsta/article/details/136739901

相关文章

  • 开源复刻apple 数学笔记;纯C++实现了ChatGLM系列模型;腾讯混元文生图模型发布新版本并开
    ✨1:AIMathNotesAIMathNotes是一个交互式绘图应用,可绘制并计算数学方程。AIMathNotes受到Apple在WWDC2024上的“MathNotes”演启发,开发的一个互动式绘图应用程序,用户可以在画布上绘制数学方程。一旦方程被绘制完成,应用程序将使用多模态LLM(LargeLanguageM......
  • c/c++设计模式--备忘录模式
    #include<iostream>#include<vector>#ifdef_DEBUG//只在Debug(调试)模式下#ifndefDEBUG_NEW#defineDEBUG_NEWnew(_NORMAL_BLOCK,__FILE__,__LINE__)//重新定义new运算符#definenewDEBUG_NEW#endif#endif//#include<boost/type_index.hpp>usingna......
  • 结构化绑定(c++17)
    结构化绑定(Structuredbindings)是C++17引入的一个特性,它使得从元组或者其他类型的数据结构中提取元素变得更加方便和直观。它允许我们通过一条语句将一个复杂类型的数据解构成其组成部分,而无需显式地访问每个成员。使用示例:假设有一个结构体Person和一个返回结构体的函数:#i......
  • C/C++ 全局对象注意事项
    在C/C++中,全局对象是指在所有函数外部定义的对象,它们在整个程序生命周期内都是存在的。全局对象有一些特殊的注意事项,下面将详细总结:初始化顺序:全局对象的构造函数在程序开始执行之前就会被调用,这意味着它们会在任何函数(包括main函数)之前被初始化。因此,必须确保全局对象的......
  • 【四种语言一网打尽(C\C++\Python\Golang)】L1-012 计算指数
    L1-012计算指数真的没骗你,这道才是简单题——对任意给定的不超过10的正整数n,要求你输出2^n。不难吧?输入格式:输入在一行中给出一个不超过10的正整数n。输出格式:在一行中按照格式2^n=计算结果输出2^n的值。输入样例:5输出样例:2^5=32C语言参考......
  • 【四种语言一网打尽(C\C++\Python\Golang)】L1-009 N个数求和
    L1-009N个数求和本题的要求很简单,就是求N个数字的和。麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和也必须是有理数的形式。输入格式:输入第一行给出一个正整数N(≤100)。随后一行按格式a1/b1a2/b2…给出N个有理数。题目保证所有分子和分母都在长整型范围......
  • C++智能指针
    std::unique_ptr:独特所有权模型,一个std::unique_ptr在同一时间内只允许有一个对象实例。它不允许被复制,但可以被移动。std::shared_ptr:共享所有权模型,多个std::shared_ptr可以指向同一对象,通过引用计数机制来管理对象的生命周期。当最后一个指向对象的std::shared_ptr被销毁时,对......
  • 【C++】C/C++内存管理
    C/C++内存管理C/C++内存分布C语言中的内存管理方式C++中内存管理方式内置类型自定义类型operatornew和operatordelete函数new和delete实现原理定位new表达式(placement-new)malloc/free与new/delete的区别内存泄漏何为内存泄漏内存泄漏的分类如何检测内存泄漏如何避免内......
  • [转]32th@深入解析C++并发编程:从多线程到现代C++并发库@20240616
    深入解析C++并发编程:从多线程到现代C++并发库你有没有想过,为什么C++在多线程并发编程方面如此强大?C++11标准的发布,为并发编程带来了哪些革命性的变化?本文将深入探讨C++并发编程背后的技术原理,带你领略现代C++并发库的强大之处。文章将结合代码片段,为你揭示C++并发编程的精髓。1.......
  • [转]32th@探索C++的模板元编程:揭秘零运行时开销的高性能编程技术@20240616
    C++的模板元编程是一种强大的编程技术,它能够在编译时进行计算,生成高效的代码,而且不需要任何运行时开销。这种技术被广泛应用于高性能计算、游戏开发、金融等领域,是C++程序员必须掌握的技能之一。本文将深入探讨C++模板元编程的原理和实现方式,并通过代码案例来展示其强大的功能。相......