1. 程式人生 > >洛谷 P1855 榨取kkksc03 題解

洛谷 P1855 榨取kkksc03 題解

size 範圍 格式 turn 表示 print void include ||

此文為博主原創題解,轉載時請通知博主,並把原文鏈接放在正文醒目位置。

題目鏈接: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 題解