比赛 专项训练十题 评测结果 AAAAAAAAAA
题目名称 灵魂分流药剂 最终得分 100
用户昵称 TARDIS 运行时间 0.000 s
代码语言 C++ 内存使用 0.04 MiB
提交时间 2017-05-30 20:27:55
显示代码纯文本
#include<bits/stdc++.h>
#define COGS
using namespace std;
const int maxn=110,maxm=11;
int n,m,a,b;
vector<int> K[maxm];
int costa[maxn],costb[maxn],belong[maxn],fff[maxn];
int f[maxn][maxn];
int drug[maxn][4];
int ans=-1,temp,num;
inline void in(){
	#ifdef COGS
	freopen("soultap.in","r",stdin);
	freopen("soultap.out","w",stdout);
	#endif
	scanf("%d%d%d%d",&n,&m,&a,&b);
	for (int i=1;i<=n;i++){
		scanf("%d%d%d%d",&drug[i][1],&drug[i][2],&drug[i][3],&drug[i][4]);
		K[drug[i][3]].push_back(i);
	}
}
inline void dp(){
	for (int k=1;k<=m;k++){
		for (int v1=b;v1>=0;v1--){
			for (int v2=a;v2>=0;v2--){
		        for (int i=0;i<K[k].size();i++){
			    num=K[k][i];
			    if (v1<drug[num][1]||v2<drug[num][2]) continue;
			    int &x=f[v1][v2];
			    int y=f[v1-drug[num][1]][v2-drug[num][2]]+drug[num][4];
			    if (y>x) x=y;
			}
		}
	}
    }
}
inline void p(){
	printf("%d",f[a][b]);
}
int Main(){
	in();
	dp();
	p();
	return 0;
}
int main(){;}
int xlm=Main();