洛谷 P1855 榨取kkksc03 题解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了洛谷 P1855 榨取kkksc03 题解相关的知识,希望对你有一定的参考价值。
此文为博主原创题解,转载时请通知博主,并把原文链接放在正文醒目位置。
题目链接:https://www.luogu.org/problem/show?pid=1855
题目描述
洛谷的运营组决定,如果一名oier向他的教练推荐洛谷,并能够成功的使用(成功使用的定义是:该团队有20个或以上的成员,上传10道以上的私有题目,布置过一次作业并成功举办过一次公开比赛),那么他可以浪费掉kkksc03的一些时间的同时消耗掉kkksc03的一些金钱以满足自己的一个愿望。
Kkksc03的时间和金钱是有限的,所以他很难满足所有同学的愿望。所以他想知道在自己的能力范围内,最多可以完成多少同学的愿望?
输入输出格式
输入格式:
第一行,n M T,表示一共有n(n<=100)个愿望,kkksc03 的手上还剩M(M<=200)元,他的暑假有T(T<=200)分钟时间。
第2~n+1行 mi,ti 表示第i个愿望所需要的时间和金钱。
输出格式:
一行,一个数,表示kkksc03最多可以实现愿望的个数。
输入输出样例
输入样例#1:
6 10 10 1 1 2 3 3 2 2 5 5 2 4 3
输出样例#1:
4
说明
提示 第1,2,3,6个
分析:
首先拒绝给洛谷打广告
此题和NASA的食物计划(P1507)几乎是完全一样,随手一起A了。
所以此文毫无意义
AC代码:
1 #include<cstdio> 2 #include<algorithm> 3 #include<cmath> 4 #include<cstring> 5 6 const int MAXN = 205; 7 8 inline void read(int &x) 9 { 10 char ch = getchar(),c = ch;x = 0; 11 while(ch < ‘0‘ || ch > ‘9‘) c = ch,ch = getchar(); 12 while(ch <= ‘9‘ && ch >= ‘0‘) x = (x<<1)+(x<<3)+ch-‘0‘,ch = getchar(); 13 if(c == ‘-‘) x = -x; 14 } 15 16 inline int max(int a,int b) 17 {return a>b?a:b;} 18 19 int n,M,T,t[MAXN],m[MAXN],f[MAXN][MAXN]; 20 21 int main() 22 { 23 read(n),read(M),read(T); 24 for(int i = 1;i <= n;++ i) 25 read(t[i]),read(m[i]); 26 for(int i = 1;i <= n;++ i) 27 for(int j = M;j >= m[i];-- j) 28 for(int k = T;k >= t[i];-- k) 29 f[j][k] = max(f[j][k],f[j-m[i]][k-t[i]]+1); 30 printf("%d\n",f[M][T]); 31 return 0; 32 }
以上是关于洛谷 P1855 榨取kkksc03 题解的主要内容,如果未能解决你的问题,请参考以下文章