2 solutions

  • 1
    @ 2024-7-29 16:25:00
    #include<bits/stdc++.h>
    using namespace std;
    const int N=35,M=85;
    int f[N][M];
    int main()
    {
       int v,m,n;
       cin>>v>>m>>n;
       memset(f,0x3f,sizeof f);
       f[0][0]=0;
       for(int k=1;k<=n;k++)
       {
          int v1,m1,w;
          cin>>v1>>m1>>w;
          for(int i=v;i>=0;i--)
          {
             for(int j=m;j>=0;j--)
             {
                f[i][j]=min(f[i][j],f[max(0,i-v1)][max(0,j-m1)]+w);
             }
          }
       }
       if(f[v][m]==0x3f3f3f3f)
       {
          cout<<-1;
       }
       else
       {
          cout<<f[v][m];
       }
       return 0;
    }
    
    
    • -2
      @ 2024-7-29 16:22:28
      #include<bits/stdc++.h>
      using namespace std;
      const int N=35,M=85;
      int f[N][M]; //f[i][j]表示氧气含量至少为i,燃料值至少为j的最低重量
      int main()
      {
          int v,m,n;
          cin>>v>>m>>n;
          memset(f,0x3f,sizeof f);
          f[0][0]=0;
          for(int k=1;k<=n;k++)
          {
              int v1,m1,w;
              cin>>v1>>m1>>w;
              for(int i=v;i>=0;i--)
              {
                  for(int j=m;j>=0;j--)
                  {
                      f[i][j]=min(f[i][j],f[max(0,i-v1)][max(0,j-m1)]+w);
                  }
              }
          }
          if(f[v][m]==0x3f3f3f3f)
          {
              cout<<-1;
          }
          else
          {
              cout<<f[v][m];
          }
          return 0;
      }
      
      • 1

      Information

      ID
      677
      Time
      1000ms
      Memory
      256MiB
      Difficulty
      7
      Tags
      # Submissions
      7
      Accepted
      4
      Uploaded By