记录编号 346327 评测结果 AAAAAAAAAA
题目名称 “金明的预算方案”加强版 最终得分 100
用户昵称 Gravatar521 是否通过 通过
代码语言 C++ 运行时间 2.008 s
提交时间 2016-11-12 08:22:43 内存使用 19.17 MiB
显示代码纯文本
#include<cstdio>
#include<vector>
#define is(a) ((a)>='0'&&(a)<='9')
using namespace std;
char ch;bool read_flag;
inline void read(int& x)
{
	x=0,read_flag=false;
	while(ch=getchar(),!is(ch))if(ch=='-')read_flag=1;
	do x=x*10+(ch^'0'),ch=getchar(); while(is(ch));
	if(read_flag) x=-x;
}
const int Size=10010,Sizem=5010,D=10;
vector<int> son[Sizem];
int n,m,f[Sizem][Size],val[Sizem],cost[Sizem];
inline int _max(int x,int y){return x>y?x:y;}
inline void dp(int i,int j)
{
	if(j<1) return ;
	int k,s,l;
	for(k=0;k<son[i].size();k++){
		s=son[i][k];
		for(l=0;l<=j;l++) f[s][l]=f[i][l];
		dp(s,j-cost[i]);
		for(l=j;l>=cost[s];l--)
			f[i][l]=_max(f[i][l],f[s][l-cost[s]]+val[s]);
	}
}
int _521()
{
#define enjoy_coding
#ifdef enjoy_coding
	freopen("budgetc.in","r",stdin);
	freopen("budgetc.out","w",stdout);
#else
	freopen("1.in","r",stdin);
#endif
	int i,j;
	read(m),read(n);
	for(i=1;i<=n;i++){
		read(cost[i]),read(val[i]),read(j);
		cost[i]/=D,val[i]*=cost[i];
		son[j].push_back(i);
	}
	dp(0,m/D);
	printf("%d\n",f[0][m/D]*D);
	return 0;
}
int _520=_521();
int main(){;}