1 条题解

  • 2
    @ 2024-1-13 10:14:27

    只是初始化麻烦了点,其他都和01背包一模一样。

    #include<bits/stdc++.h>
    using namespace std;
    struct node{
    	long long v,c;
    };
    map< long long , node >a;//使用映射保存花纹编号,也可以在输入时1~3循环
    int main()
    {
      long long x,xv,xc,f[8002]={},n,m,i,j,v[102],c[102];//避免int和long long不兼容
      cin>>n>>m;
      for(i=1;i<=3;++i)
      {
      	cin>>x>>xc>>xv;
      	a[x].v=xv;
      	a[x].c=xc;
      }
      for(i=1;i<=n;++i)
      {
      	cin>>xv>>x;
      	v[i]=a[x].v*xv+xv;
      	c[i]=a[x].c*xv;
      }
      for(i=1;i<=n;++i)
      for(j=m;j>=v[i];--j)
      f[j]=max(f[j],f[j-v[i]]+c[i]);//改都不用改
      cout<<f[m];
      return 0;
    }
    
    • 1

    信息

    ID
    572
    时间
    1000ms
    内存
    256MiB
    难度
    3
    标签
    (无)
    递交数
    21
    已通过
    18
    上传者