Taunt @ 2017-02-17 17:48:39
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
const int maxn=42000;
int n,m;
int t[maxn],p[maxn],q[maxn],t1[maxn],t2[maxn],p1[maxn],p2[maxn];
int f[maxn];
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++){
scanf("%d%d%d",&t[i],&p[i],&q[i]);
if(q[i]!=0){
if(t1[q[i]]==0){
t1[q[i]]=t[i];
p1[q[i]]=p[i];
}
else{
t2[q[i]]=t[i];
p2[q[i]]=p[i];
}
}
}
for(int i=1;i<=m;i++){
for(int v=n;v>=t[i];v--){
if(q[i]==0){
if(v>=t[i]) f[v]=max(f[v],f[v-t[i]]+t[i]*p[i]);
if(v>=t[i]+t1[i]) f[v]=max(f[v],f[v-t[i]-t1[i]]+t[i]*p[i]+t1[i]*p1[i]);
if(v>=t[i]+t2[i]) f[v]=max(f[v],f[v-t[i]-t2[i]]+t[i]*p[i]+t2[i]*p2[i]);
if(v>=t[i]+t1[i]+t2[i]) f[v]=max(f[v],f[v-t[i]-t1[i]-t2[i]]+t[i]*p[i]+t1[i]*p1[i]+t2[i]*t2[i]);
}
}
}
printf("%d",f[n]);
return 0;
}
by 刘心远 @ 2017-03-17 19:57:16
最后一个If的最后你写成了t2[i]*t2[i]—>t2[i]*p2[i]!!!!!