dfs20求调
  • 板块P1776 宝物筛选
  • 楼主cgxd
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/7/17 09:40
  • 上次更新2024/7/17 10:44:55
查看原帖
dfs20求调
1272259
cgxd楼主2024/7/17 09:40
#include<bits/stdc++.h>
using namespace std;
int t, n, cnt;
unordered_map<int, int> s[100005];
vector<pair<int, int>> v(1);
int dfs(int now, int wgt){
	if(s[now][wgt])
		return s[now][wgt];
	if(now > n)
		return 0;
	else if(wgt >= v[now].first)
		return s[now][wgt] = max(dfs(now + 1, wgt - v[now].first) + v[now].second, dfs(now + 1, wgt));
	else
		return 0;
}signed main(){
	scanf("%d%d", &n, &t);
	for(int i = 1; i <= n; ++i){
		pair<int, int> p;
		int k;
		scanf("%d%d%d", &p.second, &p.first, &k);
		v.resize(v.size() + k, p);
		cnt += k;
	}n = cnt;
	sort(v.begin(), v.end());
	printf("%d", dfs(1, t));
	return 0;
}
2024/7/17 09:40
加载中...