比赛 |
清明时节雨纷纷,今天天气很晴朗 |
评测结果 |
AAAAAAAAAA |
题目名称 |
金明的预算方案 |
最终得分 |
100 |
用户昵称 |
cdcq |
运行时间 |
0.014 s |
代码语言 |
C++ |
内存使用 |
5.40 MiB |
提交时间 |
2017-04-07 19:13:22 |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int a[110000],w[110000],b[110][110],top[110];
int f[1100000];
int n,v;
int ans=0;
int main()
{
freopen("budget.in","r",stdin);
freopen("budget.out","w",stdout);
cin>>v>>n;
v/=10;
int p;
for(int i=1;i<=n;i++)
{
scanf("%d%d%d",&w[i],&a[i],&p);
w[i]/=10;
a[i]*=w[i];
if(p!=0)
{
b[p][++top[p]]=i;
top[i]=-1;
}
}
for(int i=1;i<=n;i++)
{
if(top[i]!=-1)
{
for(int j=v;j>=w[i];j--)
{
if(f[j]<f[j-w[i]]+a[i])
{
f[j]=f[j-w[i]]+a[i];
}
if(j-w[i]-w[b[i][1]]>=0&&f[j]<f[j-w[i]-w[b[i][1]]]+a[i]+a[b[i][1]])
{
f[j]=f[j-w[i]-w[b[i][1]]]+a[i]+a[b[i][1]];
}
if(top[i]==2&&j-w[i]-w[b[i][2]]>=0)
{
if(f[j]<f[j-w[i]-w[b[i][2]]]+a[i]+a[b[i][2]])
{
f[j]=f[j-w[i]-w[b[i][2]]]+a[i]+a[b[i][2]];
}
if(j-w[i]-w[b[i][1]]-w[b[i][2]]>=0)
{
if(f[j]<f[j-w[i]-w[b[i][1]]-w[b[i][2]]]+a[i]+a[b[i][1]]+a[b[i][2]])
{
f[j]=f[j-w[i]-w[b[i][1]]-w[b[i][2]]]+a[i]+a[b[i][1]]+a[b[i][2]];
}
}
}
if(f[j]>ans)
{
ans=f[j];
}
}
}
}
cout<<ans*10<<endl;
return 0;
}