题目描述 我们把USACO竞赛的试题分为若干类,每类都有2道题目。同一类题目分值相同,耗时也相同。你的任务是编写一个程序决定选择那些题目,使得考生在给定的时间内能得到尽可能多的分数。 输入 * 第一行:包括两个整数M,N。M(1 ≤ M ≤ 10,000)代表竞赛的时间(min),N(1 ≤ N ≤14)代表问题种类的数目 * 第2..N+1行:包括两个整数--每类题目的分值(1 ≤ 分值 ≤ 10000)和耗时(1 ≤耗时≤ 10000) 输出 最大可能得到的分数 样例 输入 复制 100 2 200 51 50 49 输出 复制 250的c++代码
时间: 2023-06-20 10:04:59 浏览: 157
这是一个背包问题,可以使用动态规划来解决。
定义状态:dp[i][j] 表示前 i 种题目,在 j 时间内能够获得的最大分数。
状态转移方程: dp[i][j] = max(dp[i-1][j], dp[i-1][j-time[i]] + score[i]),其中 time[i] 和 score[i] 分别表示第 i 种题目耗时和分值。
最终答案即为 dp[n][m],其中 n 为题目种类数,m 为竞赛时间。
C++ 代码如下:
相关问题
usaco python题目
非常感谢您的提问!以下是USACO提供的Python题目列表:
1. 奶酪制造
2. 统计牛群
3. 平衡二叉树
4. 奶酪收集
5. 约会
6. 不一样的路径
希望这些可以帮助您。如果您有其他问题,请随时问我。
K10858 零的数列 Zero Sum [USACO2.3] 题目描述 请考虑一个由 1 到 N(N<=9)的数字组成的递增数列:1 2 3 ... N. 现在请在数列中插入“+”表示加,或者“-”表示减,或是“ ”表示空格(如1 2 4等价于124),来将每一
个数字前都加上加减号或空格,使得整个数列的和为0。你需要编写一个程序,找出所有可能的插入方式。注意,每个数字前只能有一个符号,插入的符号个数应该等于N-1。
输入描述
输入包含一个整数N(N<=9)
输出描述
输出所有可能的插入方式,每行一个插入方式。插入方式应按照字典序从小到大排序。
示例
输入
3
输出
-1-2-3
-1-2 3
-1 2-3
-1 2 3
1-2-3
1-2 3
1 2-3
1 2 3
阅读全文