1 solutions

  • 0
    @ 2025-11-5 19:33:43

    C :

    #include<stdio.h>
    #include<math.h>
    long long f[10001];
    int n,m;
    int main()
    {
         int j,i;
        scanf("%d%d",&m,&n);
        for (int i=0;i<=m;i++) f[i]=0;
        int t,s;
        for ( i=1;i<=n;i++)
        {
            scanf("%d%d",&s,&t);
            for ( j=t;j<=m;j++)
                if (f[j]<f[j-t]+s)
                    f[j]=f[j-t]+s;
        }
        printf("%lld\n",f[m]);
        return 0;
    }
    

    C++ :

    #include<stdio.h>
    int w[10020],v[10040];
    int dp[10030];
    int ma(int x,int y)
    {
    	return x>y?x:y;
    }
    int main()
    {
       int m,n,i,j;
       scanf("%d%d",&m,&n);
       for(i=1;i<=n;i++)
       {
    	   scanf("%d%d",&v[i],&w[i]);
       }
       for(i=1;i<=n;i++)
       {
    	   for(j=w[i];j<=m;j++)
    	   {
    		    
    				   dp[j]=ma(dp[j],dp[j-w[i]]+v[i]);
    	   }
       }
       printf("%d\n",dp[m]);
       
    	return 1;
    }
    

    Pascal :

    //codeless;
    var m,n,tip,i,j:longint;
        f,score,time:array[0..10000] of longint;
    function max(a,b:longint):longint;
    begin
     if a>b then exit(a)
     else exit(b);
    end;
    begin
    readln(m,n);
    for i:=1 to n do
     readln(score[i],time[i]);
    for i:=1 to n do
     begin
     tip:=0;
     repeat
      inc(tip);
      for j:=m downto time[i] do
      f[j]:=max(f[j-time[i]]+score[i],f[j]);
     until time[i]*tip>m;
     end;
    writeln(f[m]);
    end.
    
    • 1

    Information

    ID
    19391
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By