头像

wangyj

$ACwing I Love C++$




在线 



wangyj
19分钟前
#include<iostream>
#include<vector>
using namespace std;
struct good{
    int w,t;
};
vector<good>v[61];
int n,m,a,b,c,f[32001];
int max(int x,int y){return x>y?x:y;}
int main()
{
    scanf("%d%d",&n,&m);
    for(int i=1;i<=m;i++){
        scanf("%d%d%d",&a,&b,&c);
        int temp=v[c].size();
        if(!c)v[i].push_back({a,a*b});
        else for(int k=0;k<temp;k++)v[c].push_back({a+v[c][k].w,a*b+v[c][k].t});
    }
    for(int i=1;i<=m;i++)for(int j=n;j>=0;j--)for(int k=0;k<v[i].size();k++){
      good now=v[i][k];
      if(j>=now.w)f[j]=max(f[j],f[j-now.w]+now.t);
    }
    printf("%d",f[n]);
    return 0;
}



wangyj
20分钟前
#include<iostream>
#include<vector>
using namespace std;
struct good{
    int w,t;
};
vector<good>v[61];
int n,m,a,b,c,f[32001];
int max(int x,int y){return x>y?x:y;}
int main()
{
    scanf("%d%d",&n,&m);
    for(int i=1;i<=m;i++){
        scanf("%d%d%d",&a,&b,&c);
        int temp=v[c].size();
        if(!c)v[i].push_back({a,a*b});
        else for(int k=0;k<temp;k++)v[c].push_back({a+v[c][k].w,a*b+v[c][k].t});
    }
    for(int i=1;i<=m;i++)for(int j=n;j>=0;j--)for(int k=0;k<v[i].size();k++){
      good now=v[i][k];
      if(j>=now.w)f[j]=max(f[j],f[j-now.w]+now.t);
    }
    printf("%d",f[n]);
    return 0;
}



wangyj
21分钟前
#include<iostream>
#include<algorithm>
using namespace std;
int n,m,f[30005],i,a,b,j;
int main()
{
    scanf("%d%d",&m,&n);
    for(i=0;i<n;i++){
        scanf("%d%d",&a,&b);
        b*=a;
        for(j=m;j>=a;j--)f[j]=max(f[j],f[j-a]+b);
    }
    printf("%d\n",f[m]);
    return 0;
}


活动打卡代码 AcWing 426. 开心的金明

wangyj
21分钟前
#include<iostream>
#include<algorithm>
using namespace std;
int n,m,f[30005],i,a,b,j;
int main()
{
    scanf("%d%d",&m,&n);
    for(i=0;i<n;i++){
        scanf("%d%d",&a,&b);
        b*=a;
        for(j=m;j>=a;j--)f[j]=max(f[j],f[j-a]+b);
    }
    printf("%d\n",f[m]);
    return 0;
}



wangyj
24分钟前
#include<iostream>
#include<algorithm>
using namespace std;
int n,m,w[11][16],f[11][16],way[11],i,j,k;
int main()
{
    scanf("%d%d",&n,&m);
    for(i=1;i<=n;i++)for(j=1;j<=m;j++)scanf("%d",&w[i][j]);
    for(i=1;i<=n;i++)for(j=0;j<=m;j++)for(k=0;k<=j;k++)f[i][j]=max(f[i][j],f[i-1][j-k]+w[i][k]);
    printf("%d\n",f[n][m]);j=m;
    for(i=n;i;i--)for(k=0;k<=j;k++)if(f[i][j]==f[i-1][j-k]+w[i][k]){way[i]=k;j-=k;break;}
    for(i=1;i<=n;i++)printf("%d %d\n",i,way[i]);
    return 0;
}


活动打卡代码 AcWing 1013. 机器分配

wangyj
25分钟前
#include<iostream>
#include<algorithm>
using namespace std;
int n,m,w[11][16],f[11][16],way[11],i,j,k;
int main()
{
    scanf("%d%d",&n,&m);
    for(i=1;i<=n;i++)for(j=1;j<=m;j++)scanf("%d",&w[i][j]);
    for(i=1;i<=n;i++)for(j=0;j<=m;j++)for(k=0;k<=j;k++)f[i][j]=max(f[i][j],f[i-1][j-k]+w[i][k]);
    printf("%d\n",f[n][m]);j=m;
    for(i=n;i;i--)for(k=0;k<=j;k++)if(f[i][j]==f[i-1][j-k]+w[i][k]){way[i]=k;j-=k;break;}
    for(i=1;i<=n;i++)printf("%d %d\n",i,way[i]);
    return 0;
}



wangyj
54分钟前
#include<iostream>
using namespace std;
int n,V,M,f[105][105],v,m,w,i,j,k;
int main()
{
    scanf("%d%d%d",&n,&V,&M);
    for(i=0;i<n;i++){
        scanf("%d%d%d",&v,&m,&w);
        for(j=V;j>=v;j--)for(k=M;k>=m;k--)f[j][k]=max(f[j][k],f[j-v][k-m]+w);
    }
    printf("%d\n",f[V][M]);
    return 0;
}



wangyj
54分钟前
#include<iostream>
using namespace std;
int n,V,M,f[105][105],v,m,w,i,j,k;
int main()
{
    scanf("%d%d%d",&n,&V,&M);
    for(i=0;i<n;i++){
        scanf("%d%d%d",&v,&m,&w);
        for(j=V;j>=v;j--)for(k=M;k>=m;k--)f[j][k]=max(f[j][k],f[j-v][k-m]+w);
    }
    printf("%d\n",f[V][M]);
    return 0;
}



wangyj
1小时前
#include<iostream>
using namespace std;
int n,m,f[1005],i,j,k,v,w,s;
int main()
{
    scanf("%d%d",&n,&m);
    for(i=0;i<n;i++){
        scanf("%d%d%d",&v,&w,&s);
        if(!s)for(j=v;j<=m;j++)f[j]=max(f[j],f[j-v]+w);
        else{
            if(s==-1)s=1;
            for(k=1;k<=s;k*=2){
                for(j=m;j>=k*v;j--)f[j]=max(f[j],f[j-k*v]+k*w);
                s-=k;
            }
            if(s)for(j=m;j>=s*v;j--)f[j]=max(f[j],f[j-s*v]+s*w);
        }
    }
    printf("%d\n",f[m]);
    return 0;
}


活动打卡代码 AcWing 7. 混合背包问题

wangyj
1小时前
#include<iostream>
using namespace std;
int n,m,f[1005],i,j,k,v,w,s;
int main()
{
    scanf("%d%d",&n,&m);
    for(i=0;i<n;i++){
        scanf("%d%d%d",&v,&w,&s);
        if(!s)for(j=v;j<=m;j++)f[j]=max(f[j],f[j-v]+w);
        else{
            if(s==-1)s=1;
            for(k=1;k<=s;k*=2){
                for(j=m;j>=k*v;j--)f[j]=max(f[j],f[j-k*v]+k*w);
                s-=k;
            }
            if(s)for(j=m;j>=s*v;j--)f[j]=max(f[j],f[j-s*v]+s*w);
        }
    }
    printf("%d\n",f[m]);
    return 0;
}