1. 程式人生 > >[luogu U54181] 【NOIP 考後歡樂賽】 Mr.Lee 的評測機{01揹包}

[luogu U54181] 【NOIP 考後歡樂賽】 Mr.Lee 的評測機{01揹包}

題目

https://www.luogu.org/problemnew/show/U54181


解題思路

很明顯,評測機評測次數越多就越好,所以這就是一個01揹包。對於每組資料,就判斷一下算出來的最大評測次數是否達到當前的評測點的應評測次數,累加即可。


程式碼

#include<cstdio>
#include<algorithm>
using namespace std;
long long n,m,k,p,a[5051],b[5051],f[30010],ans,t,w,maxx; 
int main()
{
	scanf("%lld%lld%lld%lld"
,&n,&m,&k,&p); for (int i=1;i<=n;i++) scanf("%lld%lld",&a[i],&b[i]); for (int i=1;i<=n;i++) for (int j=m;j>=a[i];j--) f[j]=max(f[j],f[j-a[i]]+b[i]); for (int i=1;i<=m;i++) maxx=max(f[i],maxx); p+=maxx; for (int i=1;i<=k;i++) { scanf("%lld%lld"
,&t,&w); if (t*p>=w) ans++; } if (ans==n) printf("AC"); else printf("%lld",ans); }