样例过了,为什么才10分(用的背包)
查看原帖
样例过了,为什么才10分(用的背包)
577263
sea_bird楼主2024/3/9 14:18

听取wa声一片

#include<iostream>
using namespace std;
const int maxm=10005,maxn=10005;
int s,m,n,ans,x=0;
int w[maxn],c[maxn];
int f[maxm]; 
int main()
{
    cin>>s>>n>>m;
    for(int i=1;i<=n;i++){
    	cin>>c[i]>>w[i];
	}
    
    for(int i=1;i<=n;i++){
        for(int v=m;v>=w[i];v--){
        	if(f[v-w[i]]+c[i]>f[v]){
				f[v]=f[v-w[i]]+c[i];
                if(i!=x)
                {
                ans+=w[i];
                x=i;
                }
                
			}
			}
		      
	
	}
	
    if(f[m]<s)
    {
    	cout<<"Impossible";
	}
	else
	{
		cout<<m-ans<<endl;
	}
    return 0;
}
2024/3/9 14:18
加载中...