Dev-C++上运行过测试点,提交爆零
查看原帖
Dev-C++上运行过测试点,提交爆零
992080
Divinsword_Liao楼主2023/12/3 14:56
#include <bits/stdc++.h>
using namespace std;
int l[65], v[65][4], p[65][4], dp[32005];
inline int read ()
{
	int w = 0;	char ch = 0;
	while (ch < '0' || ch > '9')
		ch = getchar();
	while (ch >= '0' && ch <= '9')
		w = w * 10 + ch - '0', ch = getchar();
	return w;
}
int main()
{
	int n = read(), m = read(), len = 1;
	for (int i = 1; i <= m; i ++)
	{
		int vi = read(), pi = read(), q = read();
		if (q)
		{
			v[q][++l[q]] = vi + v[q][l[q] - 1];
			p[q][l[q]] = pi * vi + p[q][l[q] - 1];
			if (l[q] == 2)
			{
				v[q][++l[q]] = vi + v[q][0];
				p[q][l[q]] = pi * vi + p[q][0];
			}
		}
		else v[len][0] = vi, p[len][0] = pi * vi, len ++;
	}
	for (int i = 1; i < len; i ++)
		for (int j = n; j >= v[i][0]; j --)
			for (int k = 0; k <= l[i]; k ++)
				if (j >= v[i][k])
					dp[j] = max (dp[j], dp[j - v[i][k]] + p[i][k]);
				else break;
	printf ("%d\n", dp[n]);
	return 0;
}

到底是哪错了? 还是编译器炸了?

2023/12/3 14:56
加载中...