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

题解:AtCoder AT_awc0002_d Keys and Treasure Boxes

本文分享的必刷题目是从蓝桥云课洛谷AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。

欢迎大家订阅我的专栏:算法题解:C++与Python实现!

附上汇总贴:算法竞赛备考冲刺必刷题(C++) | 汇总


【题目来源】

AtCoder:D - Keys and Treasure Boxes (atcoder.jp)

【题目描述】

After a long adventure, Takahashi has reached ruins containingN NNtreasure chests.
经过漫长的冒险,高桥抵达了藏有N NN个宝箱的遗迹。

Each treasure chesti ii(1 ≤ i ≤ N 1 \leq i \leq N1iN) is secured with a lock of strengthC i C_iCi. A larger strength value means a sturdier lock. All treasure chests have mutually distinct lock strengths.
每个宝箱i ii1 ≤ i ≤ N 1 ≤ i ≤ N1iN)都配有一把强度为C i C_iCi的锁。强度值越大,意味着锁越坚固。所有宝箱的锁强度互不相同。

Takahashi hasM MMkeys. Each keyj jj(1 ≤ j ≤ M 1 \leq j \leq M1jM) has an unlocking powerR j R_jRj. Keyj jjcan open treasure chesti iionly if the key’s unlocking power is at least as large as the lock’s strength, that is, whenC i ≤ R j C_i \leq R_jCiRj. Note that different keys may have the same unlocking power.
高桥拥有M MM把钥匙。每把钥匙j jj1 ≤ j ≤ M 1 ≤ j ≤ M1jM)具有开启能力R j R_jRj。钥匙j jj仅当开启能力至少与锁的强度一样大时才能打开宝箱i ii,即当C i ≤ R j C_i ≤ R_jCiRj时。注意,不同的钥匙可能具有相同的开启能力。

Takahashi selects some treasure chests he wants to open (possibly0 00), and assigns exactly one key to each selected treasure chest to open it. However, the same key cannot be assigned to two or more treasure chests. Additionally, the key assigned to each treasure chest must be able to open it (C i ≤ R j C_i \leq R_jCiRj). It is fine to leave some keys unused or some treasure chests unopened.
高桥选择一些他想要打开的宝箱(可能为0 00个),并为每个被选中的宝箱分配恰好一把钥匙来打开它。然而,同一把钥匙不能被分配给两个或更多宝箱。此外,分配给每个宝箱的钥匙必须能够打开它(C i ≤ R j C_i ≤ R_jCiRj)。可以留一些钥匙不使用,也可以留一些宝箱不打开。

Find the maximum number of treasure chests Takahashi can open.
求高桥能够打开的最大宝箱数量。

【输入】

N NNM MM
C 1 C_1C1C 2 C_2C2… \ldotsC N C_NCN
R 1 R_1R1R 2 R_2R2… \ldotsR M R_MRM

  • The first line contains an integerN NNrepresenting the number of treasure chests and an integerM MMrepresenting the number of keys, separated by a space.
  • The second line contains integersC 1 , C 2 , … , C N C_1, C_2, \ldots, C_NC1,C2,,CNrepresenting the lock strengths of the treasure chests, separated by spaces.
  • The third line contains integersR 1 , R 2 , … , R M R_1, R_2, \ldots, R_MR1,R2,,RMrepresenting the unlocking powers of the keys, separated by spaces.

【输出】

Print the maximum number of treasure chests Takahashi can open, on a single line.

【输入样例】

3 3 10 20 30 15 25 35

【输出样例】

3

【解题思路】

【算法标签】

#双指针#

【代码详解】

#include<bits/stdc++.h>usingnamespacestd;constintN=200005;intn,m;// n: 商品数量,m: 优惠券数量intc[N],r[N];// c: 商品价格数组,r: 优惠券金额数组intmain(){cin>>n>>m;// 读入商品数量和优惠券数量for(inti=1;i<=n;i++){cin>>c[i];// 读入第i个商品的价格}for(inti=1;i<=m;i++){cin>>r[i];// 读入第i张优惠券的金额}// 对商品价格进行升序排序,从下标1到nsort(c+1,c+n+1);// 对优惠券金额进行升序排序,从下标1到msort(r+1,r+m+1);intcnt=0;// 计数器,记录有多少商品可以使用优惠券// 双指针贪心匹配inti=1,j=1;// i: 商品指针,指向当前要处理的商品;j: 优惠券指针,指向当前要使用的优惠券// 当还有商品未处理且还有优惠券可用时,继续匹配while(i<=n&&j<=m){// 跳过所有金额小于当前商品价格的优惠券// 因为优惠券金额必须大于等于商品价格才能使用while(j<=m&&r[j]<c[i]){j++;// 当前优惠券金额太小,尝试下一张优惠券}// 如果还有可用的优惠券(即找到了金额>=商品价格的优惠券)if(j<=m){i++;// 处理下一个商品j++;// 使用当前优惠券,并指向下一张优惠券cnt++;// 成功匹配一个商品,计数器加1}else// 如果没有可用的优惠券了(所有优惠券金额都小于当前商品价格){i++;// 当前商品无法使用任何优惠券,处理下一个商品}}cout<<cnt<<endl;// 输出能使用优惠券的商品数量return0;}

【运行结果】

3 3 10 20 30 15 25 35 3
http://www.jsqmd.com/news/674352/

相关文章:

  • 用Unity ML-Agents训练一个会踢足球的AI:从场景导入到模型部署完整实战
  • COF-8@Fe₃O₄ NPs,COF-8修饰四氧化三铁纳米颗粒,合成及纯化过程
  • 微信生态的技术引擎API
  • 价格型需求响应:分时电价下光伏微网储能系统多目标容量优化配置研究
  • 如何正确使用 React 的 useContext Hook 管理组件状态
  • 别再只盯着ChatGPT了!从扫地机器人到工业机械臂,一文看懂AI如何让机器“活”起来
  • AI CRM价值模式测评:功能交付还是结果交付?
  • Mobilerun终极指南:用自然语言轻松控制Android和iOS设备
  • 华为WATCH FIT 5系列发布:轻薄时尚+专业健康,成年轻用户智能穿戴更优解
  • Co-MOF-74@Fe₃O₄ NPs,Co-MOF-74修饰四氧化三铁纳米颗粒,反应机制
  • 为什么 Iceberg v3 是数据湖仓的“iPhone 时刻“?
  • ANSYS WORKBENCH轴承动力学仿真:内圈、外圈及滚子故障模拟与凯斯西储大学SKF轴承...
  • STNN算法研究
  • Unity学习笔记(六)——3DRPG游戏(4)
  • 如何永久保存QQ空间青春记忆?GetQzonehistory一键备份终极方案
  • 从理论到实战:手把手教你用Python(NumPy+Pandas)搞定拉丁超立方抽样并导出Excel
  • 2026 云南 AIGEO 服务市场对比分析:云南企服科技综合实力评估
  • 2026最稳代练创业项目:三角洲护航系统——全端部署+智能匹配,破解获客与信任难题
  • 存储过程详解:把SQL逻辑“打包”存起来,下次一键调用!|转行学DB第12天
  • Vue3项目里,除了clearFiles,Element-Plus上传组件还有哪些隐藏技巧?
  • 国际半导体全产业链展会推荐:全球覆盖上下游优质展会精选 - 品牌2026
  • 全国一体化算力网调度:政务 AI 规模化应用的算力底座如何搭建
  • 多视角视频扩散策略:一种三维时空-觉察视频动作模型
  • GD32F103串口调试:从printf重定向到中断收发,一个工程搞定所有(附完整代码)
  • JavaScript中严格模式use-strict对引擎解析的辅助
  • AIGC部署和生成图片
  • 移动号码状态查询 API 集成指南
  • Claude Code 安装报错 “不兼容 Windows 版本“ 完整修复记录
  • 【Dify v0.8+多模态调试黄金标准】:基于37个企业级部署案例验证的4层可观测性接入方案
  • 2026年评价高的新能源汽车改装榜单优选公司 - 行业平台推荐