为什么这个边界的初始化是wa的?
查看原帖
为什么这个边界的初始化是wa的?
481621
Zhang_Wenjie楼主2024/8/9 09:55

rt,虽然这题其实不需要初始化能ac

#include <bits/stdc++.h>
#define re register int

using namespace std;
const int N = 110;

int n, m, r, rmb[N], rp[N], t[N];
int dp_num[N][N], dp_time[N][N];

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0); cout.tie(0);
	
	cin >> n;
	for (re i = 1; i <= n; i ++) cin >> rmb[i] >> rp[i] >> t[i];
	cin >> m >> r;
	
	memset(dp_time, 0x3f, sizeof(dp_time));
	for (re i = 0; i <= n; i ++) dp_time[0][i] = dp_time[i][0] = 0;
	
	for (re i = 1; i <= n; i ++)
		for (re j = m; j >= rmb[i]; j --)
			for (re k = r; k >= rp[i]; k --)
			{
				if (dp_num[j][k] < dp_num[j - rmb[i]][k - rp[i]] + 1)
				{
					dp_num[j][k] = dp_num[j - rmb[i]][k - rp[i]] + 1;
					dp_time[j][k] = dp_time[j - rmb[i]][k - rp[i]] + t[i];
				}
				else if (dp_num[j][k] == dp_num[j - rmb[i]][k - rp[i]] + 1)
					dp_time[j][k] = min(dp_time[j][k], dp_time[j - rmb[i]][k - rp[i]] + t[i]);
			}
	cout << dp_time[m][r] << '\n';
	
	return 0;
}
2024/8/9 09:55
加载中...