【SSL】竞赛得分

在USACO竞赛中,设计比赛以使参赛者获得最高得分。每个题目有不同的分数和耗时,目标是在总时间限制内选择题目组合以最大化总分。输入包含竞赛时间和题目类型,输出为可能的最大得分。解题策略类似于完全背包问题。

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

竞赛得分


Description

学生在我们USACO的竞赛中的得分越多我们越高兴。我们试着设计我们的竞赛以便人们能尽可能的多得分。现在要进行一次竞赛,总时间T固定,有若干类型可选择的题目,每种类型题目可选入的数量不限,每种类型题目有一个si(解答此题所得的分数)和ti(解答此题所需的时间),现要选择若干题目,使解这些题的总时间在T以内的前提下,所得的总分最大。
输入包括竞赛的时间,M(1 <= M <= 10000)和题目类型数目N(1 <= N <= 10000)。
后面的每一行将包括两个整数来描述一种"题型":
第一个整数说明解决这种题目能得的分数(1 <= points <= 10000),第二整数说明解决这种题目所需的时间(1 <= minutes <= 10000)。

Input

第 1 行: 两个整数:竞赛的时间M和题目类型数目N。 第 2-N+1 行: 两个整数:每种类型题目的分数和耗时。

Output

单独的一行,在给定固定时间里得到的最大的分数。

Sample Input

300 4
100 60
250 120
120 100
35 20

Sample Output

605

Hink

Time Limit:10000MS
Memory Limit:65536K

解题思路

其实这道题和上一题完全背包的思路是一样的,只不过是输入数据反了一下。
状态转移方程: f [ j ] = m a x ( f [ j ] , f [ j − p [ i ] ] + w [ i ] ) ; f[j]=max(f[j],f[j-p[i]]+w[i]);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值