P2430严酷的训练

时间:2023-03-09 02:23:44
P2430严酷的训练

传送

这个题的题干很长,长到令人恶心

这个题的p乍一看好像没有卵用,但其实他很有用(废话)。这里的“费用”不再是tw[i](wky做第i道题的时间),而是tw[p[i]](wky做第i道题所对应的知识点的时间),跳过这个坑后就套用经典的01背包代码就行了

代码如下:

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int tw[],spw,splw,m,n,f[],tl[],p[],q[],t;//这里我们也可以很皮的用rqy和lz
int main()
{
scanf("%d %d",&spw,&splw);
scanf("%d %d",&m,&n);
for(int i=;i<=n;i++)
{scanf("%d",&tl[i]);
tw[i]=(splw/spw)*tl[i];
}
for(int i=;i<=m;i++)
cin>>p[i]>>q[i];
scanf("%d",&t);
for(int i=;i<=m;i++)
{
for(int j=t;j>=tw[p[i]];j--)
{f[j]=max(f[j],f[j-tw[p[i]]]+q[i]);
}
}
printf("%d",f[t]);
}