C++课后习题训练记录Day98

1.练习项目:

问题描述

小蓝想要给她的女朋友小桥买一份生日礼物,她来到了一家礼品店。在店里,她看中了 N 件物品,每件物品都有一个价格 Ai。

小蓝手中有 K 元钱和一张 50% 的折扣券,可以在购买任意一件物品时使用。使用折扣券后,购买该物品的价格为原价的一半向上取整。

对于一件价值为 X 的物品,当小蓝使用折扣卷后,他只需要花费 ⌈x/2⌉ 元即可带走该商品。

请帮助小蓝确定,在使用折扣券的情况下,她最多能够购买多少件物品送给小桥作为生日礼物。

输入格式

第一行是两个整数 N 和 K,分别表示物品的数量和小蓝手中的预算。

接下来一行是 N 个整数,表示每个物品的价格 Ai。

数据范围保证:1≤N≤1e5,1≤Ai≤1e9,0≤K≤1e9。

输出格式

输出一个整数,表示在使用折扣券的情况下,小蓝最多可以购买多少件物品作为生日礼物。

2.选择课程

在蓝桥云课中选择课程《16届蓝桥杯省赛无忧班(C&C++ 组)4期》,选择第二章"基础算法"编程30并开始练习。

3.开始练习

(1)源码:

#include<bits/stdc++.h>

using namespace std;

using ll=long long;

priority_queue<ll,vector<ll>,greater<ll>>pq;

int main()

{

ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);

int n,k,x;cin>>n>>k;

for(int i=1;i<=n;i++){

cin>>x;

pq.push(x);

}

ll ans=0;

for(int i=1;i<=n;i++){

if(k==0){

break;

}

ans++;

k-=pq.top();

pq.pop();

if(k-pq.top()<0){

if(k-pq.top()/2+(pq.top()%2?0:1)<0){

break;

}

}

}

cout<<ans<<'\n';

return 0;

}

(2)检验结果

对此代码进行检验,检验后无报错,提交此代码,判题结果为正确100分。

(3)练习心得:注意每段代码末尾的分号是否存在,如不存在则需即使补充;输入法是否切换为英语模式;语法是否错误。

相关推荐
郝学胜-神的一滴13 分钟前
完全二叉树与堆底层原理深度剖析 | 手写C++大顶堆实现
java·开发语言·数据结构·c++·python·算法
黄毛火烧雪下30 分钟前
Java 基础笔记:文件、递归与字符编码
java·开发语言·笔记
大白话_NOI36 分钟前
【洛谷 P2678】 [NOIP2015 提高组] 跳石头 超详细题解
c++·算法
swordbob1 小时前
CAP 定理:为什么不能同时实现 C、A、P?
开发语言·后端·spring
疯狂成瘾者1 小时前
Java 常用工具包 java.util
java·开发语言·windows
枫叶丹41 小时前
【HarmonyOS 6.0】MDM Kit 新特性:PC/2in1设备无锁屏密码重启自动解锁能力详解
开发语言·华为·harmonyos
ZHW_AI课题组1 小时前
Python 调用百度智能云 API 实现地址识别
开发语言·人工智能·python·机器学习·百度·数据挖掘
88号技师2 小时前
2026年2月一区SCI-交叉传播优化算法Propagation Alongside Crossover-附Matlab免费代码
开发语言·算法·数学建模·matlab·优化算法
chase_my_dream2 小时前
LeGO-LOAM 详细源码流程解读
c++·计算机视觉·自动驾驶
A.零点2 小时前
【2个月 C 语言从入门到精通:零基础系统教程】第十二讲:深入了解指针(五)
c语言·开发语言·网络·笔记·visual studio