zz4477 @ 2018-11-07 21:35:28
#include<iostream>
#include<cstdlib>
using namespace std;
int f[1000000];
int sum=0;
int p[800][3],v[800][3];
int main()
{
int n,m,a,b,c;
cin>>n>>m;
for(int i=1;i<=m;i++)
{
cin>>a>>b>>c;
if(!c)
{
p[++sum][0]=a/10;
v[sum][0]=a*b;
}
else
{
if(!p[c][1])
{
p[c][1]=a/10;
v[c][1]=a*b;
}
else
{
p[c][2]=a/10;
v[c][2]=a*b;
}
}
//system("pause");
}
n/=10;
/* for(int i=1;i<=sum;i++)
{
cout<<p[i][0]<<" "<<p[i][1]<<" "<<p[i][2]<<endl;
cout<<v[i][0]<<" "<<v[i][1]<<" "<<v[i][2]<<endl;
}*/
for(int i=1;i<=sum;i++)
{
for(int j=n;j>=p[i][0];j--)
{
if(j>=p[i][0]) f[j]=max(f[j],f[j-p[i][0]]+v[i][0]);
if(j>=p[i][0]+p[i][1]) f[j]=max(f[j],f[j-p[i][0]-p[i][1]]+v[i][0]+v[i][1]);
if(j>=p[i][0]+p[i][2]) f[j]=max(f[j],f[j-p[i][0]-p[i][2]]+v[i][0]+v[i][2]);
if(j>=p[i][1]+p[i][2]+p[i][0]) f[j]=max(f[j],f[j-p[i][0]-p[i][2]-p[i][1]]+v[i][0]+v[i][2]+v[i][1]);
}
}
cout<<f[n]<<endl;
return 0;
}
by WA鸭鸭 @ 2018-11-07 21:37:51
@zz4477 您和楼下撞头像
by 冬瓜皮 @ 2018-11-07 21:39:30
@WA鸭鸭 ?(跑
by WA鸭鸭 @ 2018-11-07 21:41:56
@冬瓜皮 不是,帖子楼主
by 冬瓜皮 @ 2018-11-07 21:44:43
@WA鸭鸭 2333
by 一只蓝久 @ 2018-11-07 21:46:48
您和我撞头像了
by 一只蓝久 @ 2018-11-07 21:46:53
QWQ
by zz4477 @ 2018-11-07 21:51:50
@一只蓝久随便找的..
by limi_sanhua @ 2018-11-07 22:20:15
@zz4477 因为主件不能那样子标序号
by limi_sanhua @ 2018-11-07 22:21:25
@zz4477 题目是所有主件附件都有序号,你那个就成了只有主件有序号了,
by limi_sanhua @ 2018-11-07 22:29:40
@zz4477
#include<bits/stdc++.h>
using namespace std;
int f[1000000];
int sum=0;
int p[1000][3],v[1000][3];
int flag[1000];//加个flag标记那些序号是主件 的序号
int main()
{
int n,m,a,b,c;
cin>>n>>m;
for(int i=1;i<=m;i++)
{
cin>>a>>b>>c;
if(!c)
{
p[i][0]=a/10;
v[i][0]=a*b;
flag[i]=1;//标记这个序号为主件
}
else
{
if(!p[c][1])
{
p[c][1]=a/10;
v[c][1]=a*b;
}
else
{
p[c][2]=a/10;
v[c][2]=a*b;
}
}
}
n/=10;
for(int i=1;i<=m;i++)
{
if(!flag[i])continue;//没被标记为主件则是附件,跳过
for(int j=n;j>=p[i][0];j--)
{
f[j]=max(f[j],f[j-p[i][0]]+v[i][0]);
if(j>=p[i][0]+p[i][1]) f[j]=max(f[j],f[j-p[i][0]-p[i][1]]+v[i][0]+v[i][1]);
if(j>=p[i][0]+p[i][2]) f[j]=max(f[j],f[j-p[i][0]-p[i][2]]+v[i][0]+v[i][2]);
if(j>=p[i][1]+p[i][2]+p[i][0]) f[j]=max(f[j],f[j-p[i][0]-p[i][2]-p[i][1]]+v[i][0]+v[i][2]+v[i][1]);
}
}
cout<<f[n]<<endl;
return 0;
}