样例没过但AC了?
查看原帖
样例没过但AC了?
446020
anran0928楼主2023/10/27 08:17

借鉴了第二篇题解的思路

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1005;
int n, m, t, c[N], tr[N], dp[N][N];

signed main(){
	scanf("%lld%lld%lld", &n, &m, &t);
	if(m >= t){
		puts("0");
		return 0;
	}
	for(int i = 1; i <= n; i++){
		scanf("%lld%lld", &c[i], &tr[i]);
	}
	memset(dp, -0x3f, sizeof dp);
	dp[0][0] = m;
	for(int i = 0; i <= t; i++){
		for(int j = 0; j <= t; j++){
			for(int k = 1; k <= n; k++){
				if(j >= tr[k] && dp[i][j - tr[k]] >= c[k]) dp[i][j] = max(dp[i][j] , dp[i][j - tr[k]] - c[k]);
			}
			if(dp[i][j] >= t){ printf("%lld\n", i); return 0; }
			dp[i + 1][j] = dp[i][j] + j;
		}
	}
	return 0;
}
2023/10/27 08:17
加载中...