站外题玄关求助
  • 板块题目总版
  • 楼主liyelei
  • 当前回复4
  • 已保存回复4
  • 发布时间2025/8/29 13:26
  • 上次更新2025/8/29 18:50:08
查看原帖
站外题玄关求助
1385862
liyelei楼主2025/8/29 13:26

#include <bits/stdc++.h>
using namespace std;
int dp[1501];
struct node {
	int t, a, b;
} work[1001];
int main() {
//	freopen("work.in", "r", stdin);
//	freopen("work.out", "w", stdout);
	int n, m = 0;
	cin >> n;
	for (int i = 1; i <= n; i++) {
		cin >> work[i].t >> work[i].a >> work[i].b;
		m = max(m, work[i].b);
	}
	memset(dp, 0x3f3f3f3f, sizeof dp);
	dp[0] = 0;
	for (int i = 1; i <= m; i++) {
		int f = 0;
		for (int j = 1; j <= n; j++) {
			if (i - work[j].t >= work[j].a && work[j].b >= i) dp[i] = min(dp[i], dp[i - work[j].t] + work[j].t), f = 1;
		}
		if (!f) dp[i] = min(dp[i], dp[i - 1]);
	}
	cout << dp[m];
	return 0;
}

调对必关

2025/8/29 13:26
加载中...