百度之星2024 初赛第一场 补给
百度之星2024 初赛第一场 补给
- 题干描述
- 问题分析:
- C++代码
- Java代码:
- Python代码
- 补充说明:
题干描述
参考自马蹄集OJ,原文链接1
可怕的战争发生了,小度作为后勤保障工作人员,也要为了保卫国家而努力。
现在有 𝑁(1≤𝑁≤103)个堡垒需要补给,然而总的预算 𝐵(1≤𝐵≤10^9)是有限的。
现在已知第 𝑖 个堡垒需要价值 𝑃(𝑖)的补给,并且需要 𝑆(𝑖)的运费。- 鉴于小度与供应商之间长期稳定的合作关系,供应商慷慨地提供了一次特别的采购优惠。 - 具体而言,小度可以选择对某次补给进行半价采购。- 这意味着,如果小度决定在向第 𝑖 个堡垒提供补给时利用这一优惠,- 那么此次补给的采购及运输总费用将减少至 ⌊𝑃(𝑖)/2⌋+𝑆(𝑖),其中优惠价格按照向下取整的原则计算。- 对于其他堡垒 j,补给的采购和运输费用则保持不变,即 𝑃(𝑗)+𝑆(𝑗)。请计算小度的最多能给多少堡垒提供补给?
格式
输入格式:
第1行2个整数:𝑁和 𝐵 。(1≤𝑁≤103,1≤𝐵≤10^9); 第2到 𝑁+1行:第 𝑖+1
行包含两个空格分隔的整数,𝑃(𝑖)和𝑆(𝑖)。(0≤P(i),S(i)≤10^9)。
输出格式:
1 行 1 个整数表示能提供补给的最大数。
样例 1
输入:
5 29
6 3
2 8
10 2
1 2
12 5
输出:
4
**
问题分析:
1.注意本题要求的是尽可能多的堡垒,那么我们的目标就是尽量优先那些花费少的堡垒。
2.读题的时候要注意,每个堡垒花费来自两个方面,一个是补给本身𝑃(𝑗),一个是运费𝑆(𝑗)),所以考虑的时候,应该是二者的和𝑃(𝑗)+𝑆(𝑗)。
3.为了尽可能多的补给堡垒,那么应该对运费和补给费用的和(𝑃(𝑗)+𝑆(𝑗))从小到大进行排序。
4.考虑优惠政策,由于只能用一次,为了优惠的最多,是不是考虑给贵的堡垒?但是如果直接给最贵的可能导致钱变少了,因此是不是应该先从少的开始,直到不够了,再试试能不能通过打折为更多的堡垒供给。
5.因此本地就是排序+贪心(贪心策略:每次选择总费用最少的堡垒)。
C++代码
参考文章2
#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>using namespace std;typedef long long ll;const int N=1010;struct node
{ll p;ll s;ll sum;
}a[N];bool cmp(node x,node y)
{return x.sum<y.sum;
}int ans;int main()
{int n,B; cin>>n>>B;for(int i=1;i<=n;i++) cin>>a[i].p>>a[i].s;for(int i=1;i<=n;i++) a[i].sum=a[i].p+a[i].s;sort(a+1,a+1+n,cmp);for(int i=1;i<=n;i++){if(B>=a[i].sum){B-=a[i].sum;ans++;}else{if(B>=floor(a[i].p/2)+a[i].s){ans++;break;}}}cout<<ans<<endl;return 0;
}
Java代码:
import java.util.Scanner;
import java.util.*;class Main {static class Fort {long p;long s;long sum;Fort(long p, long s) {this.p = p;this.s = s;this.sum = p + s;}}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int N = scanner.nextInt();long B = scanner.nextLong();Fort[] forts = new Fort[N];for (int i = 0; i < N; i++) {long p = scanner.nextLong();long s = scanner.nextLong();forts[i] = new Fort(p, s);}Arrays.sort(forts, Comparator.comparingLong(f -> f.sum));int maxCount = 0;for (int i = 0; i < N; i++) {long discountedCost = forts[i].p / 2 + forts[i].s;if (discountedCost > B) {continue;}long remaining = B - discountedCost;int count = 1;for (int j = 0; j < N; j++) {if (j == i) {continue;}if (remaining >= forts[j].sum) {remaining -= forts[j].sum;count++;} else {break;}}if (count > maxCount) {maxCount = count;}}System.out.println(maxCount);}
}
Python代码
def max_forts():import sysinput = sys.stdin.read().split()idx = 0N = int(input[idx])idx += 1B = int(input[idx])idx += 1forts = []for _ in range(N):p = int(input[idx])idx += 1s = int(input[idx])idx += 1forts.append((p, s, p + s))forts.sort(key=lambda x: x[2])max_count = 0for i in range(N):discounted_cost = forts[i][0] // 2 + forts[i][1]if discounted_cost > B:continueremaining = B - discounted_costcount = 1for j in range(N):if j == i:continueif remaining >= forts[j][2]:remaining -= forts[j][2]count += 1else:breakif count > max_count:max_count = countprint(max_count)max_forts()
补充说明:
大家首先一定要学会基础的内容哦,例如需要自行编写代码,获得用例的输入,本题的C++代码为例:
int n,B; cin>>n>>B;
for(int i=1;i<=n;i++) cin>>a[i].p>>a[i].s;
for(int i=1;i<=n;i++) a[i].sum=a[i].p+a[i].s;
相关文章:
百度之星2024 初赛第一场 补给
百度之星2024 初赛第一场 补给 题干描述问题分析:C代码Java代码:Python代码补充说明: 题干描述 参考自马蹄集OJ,原文链接1 可怕的战争发生了,小度作为后勤保障工作人员,也要为了保卫国家而努力。 现在有 …...

Collection集合遍历的三种方法
1.foreach循环遍历 格式:for(元素的数据类型 变量名:数组或集合){ } 2.使用迭代器遍历 方法名称:Iterator<E> iterator() 说明:返回集合中的迭代器对象,该迭代…...

Taro on Harmony C-API 版本正式开源
Taro 是由京东发起并维护的开放式跨端跨框架解决方案,支持以 Web 的开发范式来实现小程序、H5、原生 APP 的跨端统一开发,从 18 年开源至今,在 GitHub 已累计获得 36,000 Stars。 Taro x 纯血鸿蒙 在过去的一年中,Taro 经历了显…...

知识隔离的视觉-语言-动作模型:训练更快、运行更快、泛化更好
25年5月来自PI的论文“Knowledge Insulating Vision-Language-Action Models: Train Fast, Run Fast, Generalize Better”。 视觉-语言-动作 (VLA) 模型通过将端到端学习与来自网络规模视觉-语言模型 (VLM) 训练的语义知识迁移相结合,为机器人等物理系统训练控制策…...

[ARM][架构] 02.AArch32 程序状态
目录 参考资料 1.程序状态 - PSTATE 2.用户模式的 PSTATE 信息 2.1.状态标志 2.2.溢出/饱和标志 2.3.大于等于标志 2.4.指令集状态 2.5.IT 块状态 2.6.端序控制 2.7.指令执行时间控制 3.用户模式访问 PSTATE - APSR 寄存器 4.系统模式的 PSTATE 信息 4.1.状态标志…...
Dockerfile正确写法之现代容器化构建的最佳实践
前言 在容器化的世界里,Dockerfile是构建镜像的核心,但你真的确定自己写的Dockerfile是最佳实践吗?根据我多年的容器化经验,大多数开发者编写的Dockerfile存在效率低下、安全隐患和维护困难等问题。本文将分享现代容器化环境中Dockerfile的正确编写方式,帮助你构建更高效…...

React---day4
3、React脚手架 生成的脚手架的目录结构 什么是PWA PWA全称Progressive Web App,即渐进式WEB应用;一个 PWA 应用首先是一个网页, 可以通过 Web 技术编写出一个网页应用;随后添加上 App Manifest 和 Service Worker 来实现 PWA 的安装和离线…...

ArkUI(方舟UI框架)介绍
ArkUI(方舟UI框架)介绍 构建快速入门 使用ArkWeb构建页面...
【Bug】定时任务中 Jpa Save 方法失效
【Bug】定时任务中 Jpa Save 方法失效 首先说一下问题,在定时任务中调用 jpa 的 save 方法没有效果,但是通过外界调用,比如 controller 中注入 service 来调用是可以的,真是巨巨巨离谱,我被折磨了好几天。 我这个问题…...
英语科研词汇现象及语言演变探讨
一、词汇形态学的进化困境 希腊-拉丁语系遗存 "Pneumoconiosis"(πνεύμωνκονίαωσις)和"electroencephalogram"(ηλεκτρονεγκέφαλοςγράμμα)的构词方式反映了欧洲学者对古…...
C# 打印PDF的常用方法
这里先提供一个helper类的模板 1.使用默认程序打印 using System; using System.Collections.Generic; using System.Diagnostics; using System.Drawing.Printing; using System.IO; using System.Runtime.InteropServices;namespace PDF {public static class PrintHelper{#…...

若依微服务的定制化服务
复制依赖 复制依赖 复制system服务的bootstrap.yml文件,修改port和name 在nacos复制一个新的nacos配置,修改对应的nacos的配置 ,可能不需要修改,看情况。 网关修改 注意curd的事项,模块名称的修改...

Axios 如何通过配置实现通过接口请求下载文件
前言 今天,我写了 《Nodejs 实现 Mysql 数据库的全量备份的代码演示》 和 《NodeJS 基于 Koa, 开发一个读取文件,并返回给客户端文件下载》 两篇文章。在这两篇文章中,我实现了数据库的备份,和提供数据库下载等接口。 但是&…...
小表驱动大表更快吗,不是
背景 head头表(5000),line行表(15万),导出数据包含头和行,一对多。 以行表为维度导出15万数据。 sql 如下两个sql查询,有如下差异 驱动方式:第一个大表驱动小表&…...

20250529-C#知识:运算符重载
C#知识:运算符重载 运算符重载能够让我们像值类型数据那样使用运算符对类或结构体进行运算,并且能够自定义运算逻辑。 1、运算符重载及完整代码示例 作用是让自定义的类或者结构体能够使用运算符运算符重载一定是public static的可以把运算符看成一个函…...
【HW系列】—目录扫描、口令爆破、远程RCE流量特征
本文仅用于技术研究,禁止用于非法用途。 文章目录 目录扫描漏洞的流量特征及检测方法一、基础流量特征二、工具特征差异三、绕过行为特征四、关联行为特征五、检测与防御建议 口令爆破漏洞的流量特征及检测方法一、基础流量特征二、工具标识特征三、绕过行为特征四…...

如何在WordPress网站中添加相册/画廊
在 WordPress 网站上添加相册可以让您展示许多照片。无论您是在寻找标准的网格相册画廊还是独特的瀑布流相册画廊体验,学习如何在 WordPress 网站上添加相册总是一个好主意。在本教程中,我们将介绍两种为 WordPress 网站添加相册的方法:使用区…...
【NLP基础知识系列课程-Tokenizer的前世今生第一课】Tokenizer 是什么?为什么重要?
语言的“颗粒度”:我们到底在切什么? 我们都知道模型要处理文本,第一步是把一段段字符变成“token”。但这些 token 究竟应该是句子、单词,还是更小的片段,比如“un break able”? 这背后涉及的是一个非…...

Codeforces Round 1025 (Div. 2)
Problem - A - Codeforces 查有没有人说谎,有一个必错的情况: 两个人都说输了,必有人撒谎,还有就是所有人都赢了,也是撒谎 来看代码: #include <iostream> #include <vector> using namespa…...

Ubuntu20.04操作系统ssh开启oot账户登录
文章目录 1 前提2 设置root密码3 允许ssh登录root账户3.1 编辑配置文件3.2 重启ssh服务 4 安全注意事项 1 前提 ssh可以使用普通用户正常登录。 2 设置root密码 打开终端,设置密码 sudo passwd root # 设置root密码3 允许ssh登录root账户 3.1 编辑配置文件 su…...

类欧几里得算法(floor_sum)
文章目录 普通floor_sum洛谷P5170 【模板】类欧几里得算法 万能欧几里得算法求 ∑ i 1 n A i B ⌊ a i b c ⌋ \sum_{i1}^{n}A^iB^{\lfloor \frac{aib}{c} \rfloor} ∑i1nAiB⌊caib⌋求 ∑ i 0 n ⌊ a i b c ⌋ \sum_{i0}^n \lfloor\frac{aib}{c}\rfloor ∑i0n⌊caib…...

每日Prompt:卵石拼画
提示词 世界卵石拼画大师杰作,极简风格,贾斯汀.贝特曼的风格,彩色的鹅卵石,斑马头像,鹅卵石拼画,马卡龙浅紫色背景,自然与艺术的结合,新兴的艺术创作形式,石头拼贴画&am…...
湖北理元理律师事务所观察:债务优化如何成为民生安全网
据央行2023年报告,中国家庭债务收入比达137.8%。面对债务高压,湖北理元理律师事务所的实践揭示:专业债务规划的价值不仅是减负数字,更是构建社会稳定的微观防线。 一、从“催收恐惧”到“主动管理”的转变 该所服务数据显示&…...
AI时代新词-机器学习即服务(MLaaS)
一、什么是机器学习即服务(MLaaS)? 机器学习即服务(Machine Learning as a Service,简称MLaaS)是一种云计算服务模式,它将机器学习工具和平台作为服务提供给用户。用户可以通过云平台访问机器学…...
设计模式简述(二十)规格模式
规格模式 描述组件 使用 描述 规格模式并不在传统的23设计模式中,属于后面扩展的设计模式。 简单描述就是对一批数据进行多条件(包括逻辑组合、有点装饰器的感觉,可以不断套娃)匹配。 组件 实体 package dp.spec;/*** TODO** …...
符合Python风格的对象(覆盖类属性)
覆盖类属性 Python 有个很独特的特性:类属性可用于为实例属性提供默认 值。Vector2d 中有个 typecode 类属性,bytes 方法两次用到了 它,而且都故意使用 self.typecode 读取它的值。因为 Vector2d 实 例本身没有 typecode 属性,所…...
题目 3314: 蓝桥杯2025年第十六届省赛真题-魔法科考试
题目 3314: 蓝桥杯2025年第十六届省赛真题-魔法科考试 时间限制: 3s 内存限制: 512MB 提交: 245 解决: 49 题目描述 小明正在参加魔法科的期末考试,考生需要根据给定的口诀组合出有效的 魔法。其中,老师给定了 n 个上半部分口诀 a1, a2, . . . , an 和 m…...
Java八股-Java优缺点,跨平台,jdk、jre、jvm关系,解释和编译
java优势劣势? 优势:面向对象,平台无关,垃圾回收,强大的生态系统 劣势:运行速度慢(相比于c和rust这样的原生编译语言会比较慢),语法繁琐(相比于python&…...
linux 内核态和用户态定时器函数使用总结
1,场景总结 定时器类型精度范围适用场景注意事项用户态信号定时器秒级简单任务调度、心跳检测信号处理函数中不可调用非异步安全函数timerfdepoll纳秒级高精度事件循环、多媒体处理需要配合IO多路复用机制使用内核timer_list毫秒级设备驱动、硬件交互基于jiffies时…...
支持selenium的chrome driver更新到136.0.7103.113
最近chrome释放新版本:136.0.7103.113 如果运行selenium自动化测试出现以下问题,是需要升级chromedriver才可以解决的。 selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only s…...