題目描述
以下皆為真實的故事。(感覺很假)
洛谷2的團隊功能是其他任何oj和工具難以達到的。借助洛谷強大的服務器資源,任何學校都可以在洛谷上零成本的搭建oj并高效率的完成訓練計劃。
為什么說是搭建oj呢?為什么高效呢?
因為,你可以上傳私有題目,團隊外別人是無法看到的。我們還能幫你們評測!
你可以創建作業,給組員布置任務,查看組員的完成情況,還可以點評任意一份代碼!
你可以創建比賽!既可以是oi賽制還可以是acm賽制!既可以是團隊內部的私有比賽,也可以公開賽,甚至可以指定誰可以參加比賽。這樣,搞“x校聯賽”最合適不過了。洛谷憑借這個功能,希望能夠提供公開及私有比賽的另外一個平臺。
值得說明的是,本次比賽就是采用團隊私有題目+邀請比賽的機制。
洛谷的運營組決定,如果一名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
分析:這是一道01背包題,不過是代價變為兩個。轉移如下: f[i,j,k]表示前i個物品,有j元和k單位時間時,滿足愿望最大數 f[i,j,k]=max(f[i-1,j,k],f[i-1,j-m[i],k-t[i]]+1)
代碼:
var a,b:array [1..101] of longint; i,j,n,k,m,t:longint; f:array [0..200,0..200] of longint;function max(a,b:longint):longint; begin if a>b then exit(a) else exit(b); end;begin readln(n,m,t); for i:=1 to n do read(a[i],b[i]); for i:=1 to n do for j:=m downto a[i] do for k:=t downto b[i] do f[j,k]:=max(f[j,k],f[j-a[i],k-b[i]]+1); writeln(f[m,t]);end.新聞熱點
疑難解答