zwb3_1415926 @ 2023-04-17 16:32:28
#include<bits/stdc++.h>
using namespace std;
int m,n,v[10000],p[10000],q[10000],f[10000],sn=0,qq[10000];
int vl[100][10000],pl[100][10000],nn[10000],vv[10000];
bool vis[10000];
int main()
{
cin>>m>>n;
for(int i=1;i<=n;i++)
{
int a,b,c;
cin>>a>>b>>c;
if (c==0)
{
sn++;
vl[sn][nn[c]]=a;pl[sn][nn[c]]=b;
}
else
{
nn[c]++;
vl[c][nn[c]]=a+vl[c][0];pl[c][nn[c]]=b+pl[c][0];
}
}
for (int i=1;i<=sn;i++)
{
nn[i]++;
vl[i][3]=vl[i][1]+vl[i][2]-vl[i][0];
pl[i][3]=pl[i][1]+pl[i][2]-pl[i][0];
if (vl[i][3]<0||pl[i][3]<0)
{
nn[i]--;
}
}
for (int i=1;i<=sn;i++)
{
for (int j=m;j>=vl[i][0];j--)
{
if (nn[i]==0)
{
if (f[j]<f[j-vl[i][0]]+pl[i][0])
{
f[j]=f[j-vl[i][0]]+pl[i][0];
qq[j]=qq[j-vl[i][0]]+pl[i][0]*vl[i][0];
}
}
else
{
if (f[j]<f[j-vl[i][0]]+pl[i][0])
{
f[j]=f[j-vl[i][0]]+pl[i][0];
qq[j]=qq[j-vl[i][0]]+pl[i][0]*vl[i][0];
}
if (f[j]<f[j-vl[i][1]]+pl[i][1]&&j-vl[i][1]>=0)
{
f[j]=f[j-vl[i][1]]+pl[i][1];
qq[j]=qq[j-vl[i][1]]+pl[i][1]*vl[i][1];
}
if (f[j]<f[j-vl[i][2]]+pl[i][2]&&j-vl[i][2]>=0)
{
f[j]=f[j-vl[i][2]]+pl[i][2];
qq[j]=qq[j-vl[i][2]]+pl[i][2]*vl[i][2];
}
if (f[j]<f[j-vl[i][3]]+pl[i][3]&&j-vl[i][3]>=0)
{
f[j]=f[j-vl[i][3]]+pl[i][3];
qq[j]=qq[j-vl[i][3]]+pl[i][3]*vl[i][3];
}
}
}
}
cout<<qq[m];
}
by Vergil_Sparda @ 2023-04-17 16:51:40
15行sn
是什么