dfs40TLE求调
查看原帖
dfs40TLE求调
1272259
cgxd楼主2024/7/2 18:41
#include<bits/stdc++.h>
using namespace std;
int t, n, m;
unordered_map<int, unordered_map<int, int>> s;
vector<pair<int, int>> v(1);
int dfs(int now, int time){
	if(s[now][time])
		return s[now][time];
	if(now > n)
		return 0;
	else if(time >= v[now].first)
		return s[now][time] = max(dfs(now + 1, time - v[now].first) + v[now].second, dfs(now + 1, time));
	else
		return 0;
}signed main(){
	scanf("%d%d", &t, &n);
    m = n;
	for(int i = 1; i <= m; ++i){
		pair<int, int> p;
		scanf("%d%d", &p.first, &p.second);
		int k = t / p.first;
		n += k;
		v.resize(v.size() + k, p);
	}sort(v.begin(), v.end());
	printf("%d", dfs(1, t));
	return 0;
}
2024/7/2 18:41
加载中...