99分求调,测试点5re
查看原帖
99分求调,测试点5re
1100140
Ryoo楼主2024/7/11 18:06
#include <bits/stdc++.h>
using namespace std;
int w[1005], v[1005], a[105][1005], f[1005];
int main() {
	int m,n;
	scanf("%d%d", &m,&n);
	
	for(int i = 1; i <= n; i++) {
		int p;
		
		scanf("%d%d%d", &w[i], &v[i],&p);
		a[p][++a[p][0]] = i;
	}
	if(m == 0) {
		printf("0");
		return 0;
	}
	
	for(int p = 1; p <= n; p++) {
		for(int i = m; i >= 0; i--) {
			for(int j = 1; j <= a[p][0]; j++) {
				if(i >= w[a[p][j]]) {
					int tmp = a[p][j];
					if(f[i-w[tmp]]+v[tmp] > f[i]) f[i] = f[i-w[tmp]]+v[tmp];
				}
			}
		}
	}
	printf("%d", f[m]);
	return 0;
}
2024/7/11 18:06
加载中...