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 twelveZ @ 2020-03-27 10:46:08
@Fish_stack 您最近学并查集了?
by _Rainlzy @ 2020-03-27 11:42:43
@code_universe 对的
by twelveZ @ 2020-03-27 11:45:31
@Fish_stack 考考您/xyx
团伙这题
father[find(x+n)]=ty;
father[find(y+n)]=tx;
这段代码是啥意思啊
by _Rainlzy @ 2020-03-27 11:50:22
@code_universe x和y是敌人,要把x和y合并在同一个子集里,来实现实现敌人的敌人是朋友。
by twelveZ @ 2020-03-27 11:56:18
@Fish_stack 搭配购买这题 unionn函数有何用?
by _Rainlzy @ 2020-03-27 12:02:12
@code_universe 合并成一个集合,清零是以防重复购买某一件商品,就会出错
by twelveZ @ 2020-03-27 12:03:03
@Fish_stack 可以,看来您是掌握了
by twelveZ @ 2020-03-27 12:03:17
您现在在干啥?搞whk/刷题?
by _Rainlzy @ 2020-03-27 12:03:54
@code_universe 呃,搞English,顺便跟你扯一下并查集。
by twelveZ @ 2020-03-27 12:05:56
@Fish_stack :P行吧,不打扰您了,有时间一起刷题:P私信我