RE求调
查看原帖
RE求调
775208
Alvin1204楼主2023/8/8 18:25
#include<bits/stdc++.h>
using namespace std;
struct node{
	int v,c;
}a[10010];
int dp[2][10010];
int main(){
	int v,n,c;
	cin>>v>>n>>c;
	for(int i=1;i<=n;i++)
		cin>>a[i].v>>a[i].c;
	int res=1e9;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=c;j++){
			if(a[i].c<=j)
				dp[2][j]=max(dp[1][j],dp[2][j-a[i].c]+a[i].v);
			else dp[2][j]=dp[1][j];
			if(dp[2][j]>=v)
				res=min(res,j);
		}
		for(int j=1;j<=c;j++)
			dp[1][j]=dp[2][j];
	}
	if(res!=1e9) cout<<c-res;
	else cout<<"Impossible";
	return 0;
}
2023/8/8 18:25
加载中...