您太强了,震慑了测评姬
by 人殇物已非 @ 2018-07-16 11:33:56
@[恣扬_Elite](/space/show?uid=83903)
```cpp
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
int n,m,chose[100],f[100][40000];
struct zwhakioi{
int val,imp,son0,son1,ff;
}a[40000];
int main(){
cin>>n>>m;
int q;
for(int i=1;i<=m;i++){
cin>>a[i].val>>a[i].imp>>q;
a[i].imp*=a[i].val;
if(q){
a[i].ff=1;
if(a[q].son0) a[q].son1=i;
else a[q].son0=i;
}
}
for(int i=1;i<=m;i++){
if(a[i].ff) continue;
for(int j=n;j>=0;j-=100){
int v=a[i].val,vv=a[i].imp;
int s1=a[i].son0,v1=a[s1].val,vv1=a[s1].imp;
int s2=a[i].son1,v2=a[s2].val,vv2=a[s2].imp;
if(j>=v){
f[i][j]=max(f[i-1][j],f[i-1][j-v]+vv);
if(j>=v+v1) {f[i][j]=max(f[i][j],f[i-1][j-v-v1]+vv+vv1);continue;}
if(j>=v+v2) {f[i][j]=max(f[i][j],f[i-1][j-v-v2]+vv+vv2);continue;}
if(j>=v+v1+v2) {f[i][j]=max(f[i][j],f[i-1][j-v-v1-v2]+vv+vv1+vv2);continue;}
}
if(j<v) f[i][j]=f[i-1][j];continue;
cout<<i<<" "<<j<<" "<<f[i][j]<<endl;
}
}
cout<<f[m][n];
return 0;
}
//在你的源代码上改动一下哦
```
by TianZ @ 2018-08-02 18:54:01