20求调
查看原帖
20求调
1420163
HUC_fishfish楼主2025/6/15 16:30
#include<bits/stdc++.h>
using namespace std;
long long t,n,w[105],c[105],dp[500005];
int main() {
	cin>>t;
	while(t--) {
		memset(dp,0,sizeof dp);
		int P,Q;
		cin>>n>>P>>Q;
		for(int i=1;i<=n;++i){
			cin>>c[i]>>w[i];
		}
		for(int i=1;i<=n;++i){
			for(int j=w[i];j<=Q;++j){
                if(j>=w[i]){
                    dp[j] = max(dp[j],dp[j-w[i]]+c[i]);
                }
			}
		}
		int _ = 1;
		for(int i=1;i<=n;++i){
			if(dp[i]>=P){
				_ = 0;
				cout<<i<<"\n";
				break;
			}
		}
		if(_){
			cout<<"-1\n";
		}
	}
	return 0;
}
2025/6/15 16:30
加载中...