当前位置: 首页 > news >正文

BD202401补给

题目

可怕的战争发生了,小度作为后勤保障工作人员,也要为了保卫国家而努力。

现在有 N(1≤N≤103)N(1≤N≤103)个堡垒需要补给,然而总的预算 B(1≤B≤109)B(1≤B≤109)是有限的。

现在已知第 ii 个堡垒需要价值 P(i)P(i) 的补给,并且需要 S(i)S(i) 的运费。
鉴于小度与供应商之间长期稳定的合作关系,供应商慷慨地提供了一次特别的采购优惠。具体而言,小度可以选择对某次补给进行半价采购。
这意味着,如果小度决定在向第 ii 个堡垒提供补给时利用这一优惠,那么此次补给的采购及运输总费用将减少至 ⌊P(i)/2⌋+S(i)⌊P(i)/2⌋+S(i),其中优惠价格按照向下取整的原则计算。
对于其他堡垒 jj,补给的采购和运输费用则保持不变,即 P(j)+S(j)P(j)+S(j)。

请计算小度的最多能给多少堡垒提供补给?

输入格式:

第1行2个整数:NN 和 BB 。(1≤N≤103,1≤B≤109)(1≤N≤103,1≤B≤109);
第2到 N+1N+1 行:第 i+1i+1 行包含两个空格分隔的整数,P(i)P(i)和S(i)S(i)。(0≤P(i),S(i)≤109)(0≤P(i),S(i)≤109)。

输出格式:

1 行 1 个整数表示能提供补给的最大数。

解题思路

        这个题是包含排序和贪心的思想。

        使用结构体存储数据,通过重写sort中的比较函数实现排序。

        从小到达进行选择,优惠使用在最后一个堡垒上。

#include<bits/stdc++.h> 
using namespace std;struct ex{int p;int s;
}a[1005];
bool cmp(ex x, ex y)
{return x.p + x.s < y.p + y.s;
}
int main( )
{int n, b, ans = 0;cin >> n >> b;for(int i = 0; i < n; i++){cin >> a[i].p >> a[i].s;}sort(a, a + n, cmp);//可以对某次补给提供一次特别的采购优惠//优惠的一次一定是使用在最后的for(int i = 0; i < n; i++){if(b >= a[i].p + a[i].s || b >= floor(a[i].p / 2) + a[i].s){ans++;b -= a[i].p + a[i].s;}else{break;}}cout << ans;return 0;
}

相关文章:

  • 统计学(第8版)——统计学基础统计抽样与抽样分布(考试用)
  • C++算法动态规划4
  • (javaSE)继承和多态:成员变量,super,子类构造方法,super和this,初始化, protected 继承方式 final关键字 继承与组合
  • RAG 处理流程
  • 家政行业数字化变革:小程序开发技术剖析与实战指南
  • Python应用大学期末考试选择练习系统
  • Spring Boot 中ConditionalOnClass、ConditionalOnMissingBean 注解详解
  • 黑马python(五)
  • LangChain MCP Adapters Quickstart
  • Linux CPU 亲和性
  • Pip Manager本地Python包管理器
  • 第五十一天打卡
  • 如何配置Dify中的MCP服务
  • 【AI News | 20250611】每日AI进展
  • MySQL之事务与读视图
  • 看板中如何管理技术债务
  • 【Java学习日记38】:C语言 fabs 与 Java abs 绝对值函数
  • Linux相关问题整理
  • Boring Blog
  • Vue 数据代理机制对属性名的要求
  • 网站空间服务多少钱/小程序引流推广平台
  • 百度蜘蛛抓取网站模块/国内广告投放平台
  • wordpress中文论坛/seo搜索排名优化公司
  • 怎么做游戏网站编辑/快速提升网站排名
  • 苏州网站制作方法/沧州网络推广外包公司
  • 室内设计速成班学费/东莞seo建站