2 条题解

  • 0
    @ 2024-12-28 20:38:55

    背包板子。

    #include<bits/stdc++.h>
    #define int long long
    #define INF 0x3f3f3f
    using namespace std;
    int n,v,a[1001],b[1001],f[1001];
    signed main(){
    	while(cin>>n>>v){
    		if(!n&&!v)return 0;
    		for(int i=1;i<=n;i++)
    			cin>>a[i]>>b[i];
    		memset(f,0,sizeof(f));
    		for(int i=1;i<=n;i++)
    		for(int j=v;j>=a[i];j--)
    			f[j]=max(f[j],f[j-a[i]]+b[i]);
    		cout<<f[v]<<"\n";
    	}
    	return 0;
    }
    

    题外话:神奇的是,我开了滚动数组就 AC,不开就连样例都过不了。

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

      C :

      #include<stdio.h>
      #include<string.h>
      int main()
      {
          int w[1001],c[1001],dp[1001];
          int n,v,i,j;
          while(scanf("%d%d",&n,&v)==2)
          {   if(n==0&&v==0)
              break;
              memset(dp,0,sizeof(dp));
              for(i=0; i<n; ++i)
                  scanf("%d%d",&c[i],&w[i]);
              for(i=0; i<n; ++i)
                  for(j=v; j>=c[i]; --j)
                  {
                      if(dp[j]<dp[j-c[i]]+w[i])
                          dp[j]=dp[j-c[i]]+w[i];
                  }
              printf("%d\n",dp[v]);
          }
      }
      
      

      C++ :

      #include<iostream>
      #include<cstdio>
      #include<cmath>
      #include<cstring>
      #include<algorithm>
      #include<cstdlib>
      using namespace std;
      int f[1010][1010];
      int weight[1010],cost[1010];
      int main()
      {
          int n,v,i,j;
          while(cin>>n>>v)
          {
              if(n == 0 && v == 0) break;
              memset(f,0,sizeof(f));
              for(i = 1; i <= n; i++)
              cin>>weight[i]>>cost[i];
              for(i = 1; i <= n; i++)
              {
                  for(j = 0; j <= v; j++)
                  {
                      f[i][j] = f[i-1][j];
                      if(j>=weight[i])
                      f[i][j] = max(f[i-1][j],f[i-1][j-weight[i]] + cost[i]);
                  }
              }
              cout<<f[n][v]<<endl;
          }
          return 0;
      }
      
      
      • 1

      信息

      ID
      1838
      时间
      3000ms
      内存
      64MiB
      难度
      10
      标签
      递交数
      3
      已通过
      1
      上传者