贪心+背包

这道题比较坑的就是我们的对于相同截止时间的需要排个序,因为我们这个工作是有时间前后顺序的,我们如果不排序的话我们一些截止时间晚的工作就无法得到最优报酬

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;

#define int long long
int t;
int n;
const int N = 5005;
struct node{
	int t,end,pr;
	int start;
	bool operator<(node b){
		if(end<b.end) return 1;
		return 0;
	}
}e[N];
int ans = 0;

int dp[N];

signed main(){
	cin >> t;
	while(t--){
		cin >> n;
		int tmax = 0;
		for(int i=1;i<=n;i++){
			cin >> e[i].t >> e[i].end >> e[i].pr;
			e[i].start = e[i].end - e[i].t;
			tmax = max(tmax,e[i].end);
		}
		sort(e+1,e+1+n);
		for(int i=0;i<=5004;i++) dp[i] = 0;
		for(int i=1;i<=n;i++){
			for(int j=e[i].end;j>=e[i].t;j--){
				dp[j] = max(dp[j],dp[j-e[i].t]+e[i].pr);
			}
		}
		int ans = 0;
		for(int i=1;i<=tmax;i++) ans = max(ans,dp[i]);
		cout << ans << endl;
	}
	return 0;
}
相关推荐
dying_man8 分钟前
LeetCode--24.两两交换链表中的结点
算法·leetcode
yours_Gabriel8 分钟前
【力扣】2434.使用机器人打印字典序最小的字符串
算法·leetcode·贪心算法
草莓熊Lotso1 小时前
【数据结构初阶】--算法复杂度的深度解析
c语言·开发语言·数据结构·经验分享·笔记·其他·算法
KyollBM1 小时前
【CF】Day75——CF (Div. 2) B (数学 + 贪心) + CF 882 (Div. 2) C (01Trie | 区间最大异或和)
c语言·c++·算法
CV点灯大师1 小时前
C++算法训练营 Day10 栈与队列(1)
c++·redis·算法
GGBondlctrl1 小时前
【leetcode】递归,回溯思想 + 巧妙解法-解决“N皇后”,以及“解数独”题目
算法·leetcode·n皇后·有效的数独·解数独·映射思想·数学思想
武子康2 小时前
大数据-276 Spark MLib - 基础介绍 机器学习算法 Bagging和Boosting区别 GBDT梯度提升树
大数据·人工智能·算法·机器学习·语言模型·spark-ml·boosting
武子康2 小时前
大数据-277 Spark MLib - 基础介绍 机器学习算法 Gradient Boosting GBDT算法原理 高效实现
大数据·人工智能·算法·机器学习·ai·spark-ml·boosting
Andrew_Xzw2 小时前
数据结构与算法(快速基础C++版)
开发语言·数据结构·c++·python·深度学习·算法