例题描述 ——跑步
“梦之队”要参加市里组织的自由组合跑比赛,在比赛委员会临时给定的时间段中,各队自由
选择至少一名运动员参加,但是每个运动员的参赛时间都是一定的且不一定相同,而且每个
学校的队员只能在指定的时间段里参加跑步,即整个学校的参赛时间不能超过这个时间段。
现在已知道了每个运动员在指定的时间里可以跑多少米,如果你是教练,你将选择哪些运动
员参加比赛。使学校学“梦之队”的总成绩(跑的距离多少米)最高?
输入格式
第 1 行有两个整数 S(1 ≤ S ≤ 1000)和 n(1 ≤ n ≤ 100),用一个空格隔开,S代表学校参
赛队的总共跑步的时间,n代表可选择的运动员数目。
接下来的 2 至 n+1 行,每行包括两个在 1 到 100 之间(包括 1 和 100)的整数,分别是一
名运动员的可跑时间和在这个时间段里的成绩。
输出格式
一个整数,表示在规定的时间内,“梦之队”可得到的最高成绩。
输入输出样例
样例输入
4 3 4 30 3 20 1 11输出样例
31
样例分析
样例最多可以跑的时间是4秒,那么就有4种情况:
第一个人 第二个人 第三个人 总用时 总路程 1 √ × ×

本文介绍了0-1背包问题,通过一个跑步比赛的例子阐述问题背景,详细解析输入输出格式,并分析了为什么贪心算法无法解决此问题。文章通过动态规划的方法,展示了状态转移方程,提供了C++实现代码,讨论了降维优化以避免超时和爆空间的问题。最后,给出了相关练习题目。
最低0.47元/天 解锁文章
1751





