比赛 |
清明时节雨纷纷,今天天气很晴朗 |
评测结果 |
AAAAAAAAAA |
题目名称 |
金明的预算方案 |
最终得分 |
100 |
用户昵称 |
TARDIS |
运行时间 |
0.000 s |
代码语言 |
C++ |
内存使用 |
0.00 MiB |
提交时间 |
2017-04-07 20:06:12 |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<stack>
#include<queue>
#include<cstring>
#include<deque>
#define itn int
#define coder goodboy
using namespace std;
typedef long long LL;typedef unsigned long long ULL;
const int maxn=32010,maxv=32020;
int n,v,w[maxn],f[maxv],c[maxn],w1[maxn],w2[maxn],c1[maxn],c2[maxn],temp1,temp2,temp3,cnt=1,Max=-1;
inline void in(){
freopen("budget.in","r",stdin);
freopen("budget.out","w",stdout);
scanf("%d%d",&v,&n);v/=10;
for (int i=1;i<=n;i++){
scanf("%d%d%d",&temp1,&temp2,&temp3);temp1/=10;
if (!temp3){
w[i]=temp1*temp2;c[i]=temp1;
}
else {
if (!w1[temp3]){
w1[temp3]=temp1*temp2;c1[temp3]=temp1;
}
else{
w2[temp3]=temp1*temp2;c2[temp3]=temp1;
}
}
}
}
inline void dp(){
for (int k=1;k<=n;k++){
for (int V=v;V>=c[k];V--){
f[V]=max(f[V],f[V-c[k]]+w[k]);
if (c[k]+c1[k]<=V) f[V]=max(f[V],f[V-c[k]-c1[k]]+w[k]+w1[k]);
if (c[k]+c2[k]<=V) f[V]=max(f[V],f[V-c[k]-c2[k]]+w[k]+w2[k]);
if (c[k]+c1[k]+c2[k]<=V) f[V]=max(f[V],f[V-c[k]-c1[k]-c2[k]]+w[k]+w1[k]+w2[k]);
Max=max(Max,f[V]);
}
}
}
inline void pr(){
printf("%d",f[v]*10);
}
int Main(){
in();
dp();
pr();
return 0;
}
int main(){;}
int goodboy=Main();