【每日一题】补档 CF730I. Olympiad in Programming and Sports | 反悔贪心 | 困难

文章讨论了一个关于如何在给定学生的能力分布下,选择编程和运动队的学生,以最大化两个队总能力的问题。通过使用优先级队列进行优化,避免了O(n^2)的时间复杂度,达到了O(nlogn)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目内容

原题链接

给定 n n n 个学生,第 i i i 个学生的编程能力为 a i a_i ai ,运动能力为 b i b_i bi

现在要选择 p p p 个学生进入编程队, s s s 个学生进入运动队,每个学生只能加入一个队。

问加入两个队的 p + s p+s p+s 个学生的能力之和最大是多少。

注意: 加入运动队的学生能力为其运动能力,加入编程队的学生能力为其编程能力。

数据范围

  • 2 ≤ n ≤ 3000 2\leq n\leq 3000 2n3000
  • 1 ≤ a i , b i ≤ 3000 1\leq a_i,b_i\leq 3000 1ai,bi3000
  • p + s ≤ n p+s\leq n p+sn

题解

我们考虑这么一个问题:假设当前已经选择过了 p + s p+s p+s 个学生,其中 p p p 个加入了编程队, s s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值