记录编号 |
410931 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[BYVoid S1] 灵魂分流药剂 |
最终得分 |
100 |
用户昵称 |
Menamovic |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.025 s |
提交时间 |
2017-06-02 22:15:51 |
内存使用 |
0.36 MiB |
显示代码纯文本
#include<cstdio>
#include<vector>
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()
{
freopen("soultap.in","r",stdin);
freopen("soultap.out","w",stdout);
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;
}