1 条题解

  • 0
    @ 2024-12-24 10:06:16

    C++ :

    #include<cstdio>
    #include<cstring>
    using namespace std;
    int t[110000];
    int f[110000];
    int mymax(int x,int y)
    {
        return x>y?x:y;
    }
    int main()
    {
        int n,T;
        while(scanf("%d%d",&n,&T)!=EOF)
        {
    	    for(int i=1;i<=n;i++) scanf("%d",&t[i]);
    	    memset(f,-1,sizeof(f));
    	    f[0]=0;
    	    for(int i=1;i<=n;i++)
    	    {
    	        for(int j=T;j>=t[i];j--)
    	        {
    	            if(f[j-t[i]]!=-1)
    	            {
    	                f[j]=mymax(f[j],f[j-t[i]]+t[i]);
    	            }
    	        }
    	    }
    	    int ans=0;
    	    for(int i=1;i<=T;i++) ans=mymax(ans,f[i]);
    	    printf("%d\n",ans);
    	}
        return 0;
    }
    
    • 1

    信息

    ID
    2574
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者