不败败寇 @ 2019-09-01 19:36:04
彩虹的代码
#include<bits/stdc++.h>
using namespace std;
const int V=10010;
int v[65][3],p[65][3],size[65],m[V];
int n0,m0;
int main(){
scanf("%d%d",&n0,&m0);
for(int i=1;i<=m0;i++){
int v0,p0,q0;
scanf("%d%d%d",&v0,&p0,&q0);
if(!q0){
v[i][0]=v0;
p[i][0]=p0*v0;
}
else{
size[q0]++;
v[q0][size[q0]]=v0;
p[q0][size[q0]]=p0*v0;
}
}
for(int i=1;i<=m0;i++){
for(int j=n0;j>=v[i][0];j--)
m[j]=max(m[j],m[j-v[i][0]]+p[i][0]);
for(int k=1;k<=size[i];k++)
for(int j=n0;j>=v[i][0]+v[i][k];j--)
m[j]=max(m[j],m[j-v[i][0]-v[i][k]]+p[i][0]+p[i][k]);
for(int j=n0;j>=v[i][0]+v[i][1]+v[i][2];j--)
m[j]=max(m[j],m[j-v[i][0]-v[i][1]-v[i][2]]+p[i][0]+p[i][1]+p[i][2]);
}
printf("%d",m[n0]);
return 0;
}
by swiftc @ 2019-09-01 20:01:39
@不败败寇
数组应该是[65][6]吧
by 不败败寇 @ 2019-09-01 20:24:33
@UIKIt ?数组存这个组当中的子物品,最多三个吧?(一主二付)
by swiftc @ 2019-09-01 20:35:45
@不败败寇
那m数组应该开到32020吧...
by swiftc @ 2019-09-01 20:36:21
@不败败寇
n0不是<=32000吗
by 不败败寇 @ 2019-09-01 20:52:00
@UIKIt 哦对哦,我看错了qwq
by 不败败寇 @ 2019-09-01 20:52:49
@UIKIt 那wa的点呢
by 不败败寇 @ 2019-09-01 20:53:20
@UIKIt 现在后边四个点也蛙了
by sjyOrz @ 2020-03-01 12:45:57
@不败败寇 四种情况吧,单独一个,主和1,主和2,主和1、2
by 不败败寇 @ 2020-03-11 05:59:27
@sjyOrz 是的,谢谢您,此案已结orz