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

1187. 【动态规划】竞赛总分

题目描述

学生在我们USACO的竞赛中的得分越多我们越高兴。我们试着设计我们的竞赛以便人们能尽可能的多得分。
现在要进行一次竞赛,总时间T固定,有若干类型可选择的题目,每种类型题目可选入的数量不限,每种类型题目有一个si(解答此题所得的分数)和ti(解答此题所需的时间),现要选择若干题目,使解这些题的总时间在T以内的前提下,所得的总分最大。  

输入

输入包括竞赛的时间,M(1 <= M <= 10000)和题目类型数目N(1 <= N <= 10000)。
后面的每一行将包括两个整数来描述一种"题型"。第一个整数说明解决这种题目能得的分数(1 <= points <= 10000),第二整数说明解决这种题目所需的时间(1 <= minutes <= 10000)。

输出

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

样例输入

300 4
100 60
250 120
120 100
35  20

样例输出

605

思路

动态规划可以分成四部分

        dp1: 状态定义

                dp[i] 表示时间为i的最大的分数

        dp2: 初始化数据

                数组全部初始化为0

        dp3: 求解算法(状态转移方程)

               

if (i + v1[j].second <= n) 枚举时间, 时间+当前题目的时间 <= 规定的时间(满足条件)dp[i + v1[j].second] = max(dp[i + v1[j].second], dp[i] + v1[j].first);dp[i + v1[j].second] 选择之后的时间所达到的分数
= max(选择之后的时间原来所达到的分数, 没有选择的时候的分数 + 当前题目的分数)很多dp都是这样子的模式

        dp4: 输出答案

                dp[n] 

Code

#include <bits/stdc++.h>
using namespace std;int n, m;
typedef pair<int, int> Ipair;
vector<Ipair> v1;
void Print(vector<int> dp)
{for (auto& it : dp) cout << it << ' ';cout << endl;
}
int main() {cin >> n >> m;v1.resize(m + 1);for (int i = 1; i <= m; i++) cin >> v1[i].first >> v1[i].second;vector<int> dp(n + 1, 0); // dp数组, dp[i] 表示时间为i的最大分数// dp第二步: 求解for (int i = 0; i <= n; i++){for (int j = 1; j <= m; j++){if (i + v1[j].second <= n)dp[i + v1[j].second] = max(dp[i + v1[j].second], dp[i] + v1[j].first);}//Print(dp);}cout << dp[n];return 0;
}

相关文章:

  • IDEA MyBatisCodeHelper Pro插件高版本解密
  • Linux网络编程——五种I/O模式
  • STM32F429 的时钟系统,从AHB到APB1和APB2再到外设
  • JavaScript 核心特性完全指南
  • STL常用算法
  • 分布式锁下的Redisson:解锁新姿势,与Curator的华山论剑
  • 插入排序和希尔排序
  • Java中的函数式编程详解
  • Docker搭建MySQL 5.7一主两从主从复制架构
  • OpenAI 34页最佳构建Agent实践
  • 十六届蓝桥杯C++A组地雷阵
  • Qt中读写结构体字节数据
  • 算法思想之链表
  • 青少年编程与数学 02-016 Python数据结构与算法 27课题、金融算法
  • C++常用锁总结
  • @JsonView + 单一 DTO:如何实现多场景 JSON 字段动态渲染
  • Next.js 技术详解:构建现代化 Web 应用的全栈框架
  • 使用Service发布应用程序
  • 探索C++中的数据结构:栈(Stack)的奥秘
  • 数据类型相关问题导致的索引失效 | OceanBase SQL 优化实践
  • ETF市场规模首破4万亿,月内ETF基金净流入超3000亿
  • 云南省交通发展投资有限责任公司原党委书记、董事长陈以东接受审查调查
  • 谁在地铁里阅读?——对话上海地铁上的读书人
  • 科技如何赋能社会治理?帮外卖员找新家、无人机处理交通事故……
  • 西北政法大学推无手机课堂,有学生称要求全交,学校:并非强制
  • 华夏银行去年净赚超276亿增近5%,个人贷款不良率升至1.8%