SiTer @ 2015-10-16 21:01:31
#include <cstdio>
#include <iostream>
using namespace std;
int cost[10000][5],value[10000][5],ans[10000],N,M;
int vmax(int a,int b,int c,int d,int e)
{
int temp=a;
if(b>temp) temp=b;
if(c>temp) temp=c;
if(d>temp) temp=d;
if(e>temp) temp=e;
}
int main()
{
// freopen("test.in","r",stdin);
cin>>M>>N;
for(int i=1;i<=N;i++)
{
int tc,tv,tf;
cin>>tc>>tv>>tf;
if(!tf)
{
cost[i][0]=tc;
value[i][0]=tv*tc;
}
if(!cost[tf][1])
{
cost[tf][1]=tc;
value[tf][1]=tv*tc;
}
else
{
cost[tf][2]=tc;
value[tf][2]=tv*tc;
}
}
for(int i=1;i<=N;i++)
for(int k=M;k>=cost[i][0];k--)
ans[k]=vmax(ans[k],
ans[k-cost[i][0]]+value[i][0], ans[k-cost[i][0]-cost[i][1]]+value[i][0]+value[i][1],
ans[k-cost[i][0]-cost[i][2]]+value[i][0]+value[i][2],
ans[k-cost[i][0]-cost[i][1]-cost[i][2]]+value[i][0]+value[i][1]+value[i][2]
);
cout<<ans[M];
} 代码如上 这题在我本地所有答案都是能过的 问题是怎么跑到OJ的测评机上就只会输出0?
by 浮尘ii @ 2015-10-16 21:17:20
vmax()函数返回值缺少
return temp;
by sfd158 @ 2015-10-24 23:16:10
freopen。。。。
by BlRD @ 2016-04-08 20:14:58
[ pic=10]
by twelveZ @ 2020-03-24 10:39:25
@Fish_Stack 解释一下,您不是退役了么
by _Rainlzy @ 2020-03-24 10:42:25
@code_universe 哦,我说错了,不好意思,我没退役,只不过少上luogu了
by twelveZ @ 2020-03-24 12:52:03
@Fish_stack 请回答我这道题这个数组是干什么用的
by twelveZ @ 2020-03-24 12:52:16
就是a数组
by _Rainlzy @ 2020-03-24 13:05:23
@code_universe 差分用的,根据差分数组就可以推出原数组的每一个元素的覆盖次数,再具体一点第
这是我回答你的这题的最后一个问题。以后就不会回答了。
by twelveZ @ 2020-03-24 13:07:53
@Fish_stack 看来您是学会了,可以了:P
by _Rainlzy @ 2020-03-24 13:11:52
@code_universe 感谢!以后我估计不会回答你的各种问题了,因为以后我上luogu只会为了提升估值而搞一些东西(如刷题,贡题),其他的我都不会弄了(如水犇犇),我这段话您不用回复我,我也要走了,再见!