3 条题解

  • 1
    @ 2023-4-1 15:13:05
    using namespace std;
    int f[10005],a[1005],b[1005];
    int main()
    {
    	int t;
    	cin>>t;
    	while(t--)
    	{
    		memset(f,0,sizeof(f));
    		int n,m;
    		cin>>m>>n;
    		for(int i=1;i<=m;i++)
    		{
    			cin>>a[i];
    		}
    		for(int i=1;i<=m;i++)
    		{
    			cin>>b[i];
    		}
    		for(int i=1;i<=m;i++)
    		{
    			for(int j=n;j>=b[i];j--)
    			{
    				f[j]=max(f[j],f[j-b[i]]+a[i]);
    			}
    		}
    		cout<<f[n]<<"\n";
    	}
    	return 0;
    }
    
    
    • -1
      @ 2023-5-17 20:32:30

      #include<bits/stdc++.h> using namespace std; int m[205],l[205],n,v,t,ans,a[205][10005]; int main() { cin>>t; for(int k=1;k<=t;k++) { cin>>n>>v; for(int i=1;i<=n;i++) cin>>m[i]; for(int i=1;i<=n;i++) cin>>l[i]; memset(a,0,sizeof(a)); for(int i=1;i<=n;i++) { for(int j=0;j<=v;j++) { if(j-l[i]>=0) a[i][j]=max(m[i]+a[i-1][j-l[i]],a[i-1][j]); else a[i][j]=a[i-1][j]; } } cout<<a[n][v]<<endl; } return 0; }

      • -3
        @ 2023-4-1 15:08:16
        #include<。。。。。。>
        #define int long long
        using namespace std;
        int t,v,n;
        int f[-201][10011];
        int a[10001];
        int b[10001];
        main(){
        	cin>>t;
        	while(t--){
        		memset(f,0,sizeof(f));
        		cin>>n>>v;
        		for(int i=1;i<=n;i++) cin>>a[i];
        		for(int i=1;i<=n;i++) cin>>b[i];
        		for(int i=1;i<=n;i++){
        			for(int j=0;j<=v;j++){
        				f[i][j]=f[i-1][j];
        				if(j>=b[i]){
        					f[i][j]=max(f[i][j],f[i-1][j-b[i]]+a[i]);
        				}
        			}
        		}
        		cout<<f[n][v]<<endl;
        	}
        	return 0;
        }
        
        • 1

        信息

        ID
        494
        时间
        1000ms
        内存
        128MiB
        难度
        2
        标签
        递交数
        132
        已通过
        40
        上传者