大概思路
由于只有做完整张卷子才会产生额外的奖励 所以我们只需要枚举当有多少张卷子是完全做完的可以拿到额外奖励
剩下的贪心的从耗时最小做就行
题目给的数据很小,暴力枚举就行 时间复杂度45*45*45
C++ 代码
#include<iostream>
#include<algorithm>
using namespace std;
const int N=50;
int n,k,M,t[N],ans,res,tmpM,sum;
int main()
{
cin>>n>>k>>M;
tmpM=M;
for (int i=1;i<=k;i++) cin>>t[i],sum+=t[i];
sort(t+1,t+1+k);
for (int num=0;num<=n;num++)
{
if (M>=sum*num) {
M-=num*sum;
res+=num*(k+1);
}
else break;
for (int i=1;i<=k;i++)
{
for (int j=1;j<=n-num;j++)
{
if (M>=t[i]) M-=t[i],res++;
}
}
ans=max(ans,res);
M=tmpM,res=0;
}
cout<<ans<<"\n";
}