1 条题解

  • 0
    @ 2024-12-20 23:23:52
    #include <stdio.h>
    #include <iostream>
    #include <memory.h>
    using namespace std;
    int w[100000];
    int v[100000];
    int dp[100000];
    int s,n,d;
    int main()
    {
    	scanf("%d%d%d",&s,&n,&d);
    	for(int i=1; i<=d; ++i){
    		scanf("%d%d",&w[i],&v[i]);
    	}
    	for(int i=1; i<=n; ++i){
    		int m=s/1000;
    		for(int j=1; j<=d; ++j){
    			for(int k=w[j]/1000; k<=m; ++k){
    				if(k>=w[j]/1000) dp[k]=max(dp[k],dp[k-w[j]/1000]+v[j]);
    //				printf("%d ",dp[k]);
    			}
    //			printf("\n");
    		}
    		s+=dp[m];
    		memset(dp,0,sizeof(dp));
    
    	}
    	printf("%d",s);
    }
    • 1

    信息

    ID
    167
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    (无)
    递交数
    13
    已通过
    7
    上传者