トピックの背景
LJの友人WKYは、幻想的な少年で、仲間の間で非常に高い地位を持っています。。。
タイトル説明
子供の名前を育成するように決定、彼のプログラムレベルでの彼の教師ファラオびっくり。
ファラオの研修は非常に奇妙な方法は、彼が息WKYが規定時間を完了するために彼を求めて、質問の多くを行うようになります。パロは彼の名声の増加をできるように、彼ら自身がこれらの質問は再びそれを行うにしている入れてしまうでしょう。
WKYとパロは彼らのレベルは比の値と、これらの問題があることに費やした時間の比率に反比例する、値のレベルを持っていました。WKY値のレベルが1の場合、例えば、ファラオ値のレベルは、WKYは、同じ質問の時間をやって、2であるファラオの2倍です。
各トピックには、このような再帰、動的なリターン、最短経路、ネットワークフローとして、我々はすべて知っている、彼が属する知識を持っています。ここでは、これらの事を考慮していない、我々は彼らだけが知識ポイントがあることを知っている1、2 ......知識ポイント彼の知識の動的プログラミングは、多くの場合、シミュレートすることは困難であるなど、困難に対応します。
そして、同じ知識の下のすべてのトピックは、心配WKYのために、同じ難易度です。それぞれの質問をした、ファラオは、独自の報酬値を持っています。主題と賞品の値の知識は必ずしもリンクされていません。
WKY今王が所定の時間内に計算され、学生を支援するように依頼、WKYは最大ボーナス値は得ることができます。
入力形式
文書を入力し、次のものがあります。
最初の行:
WKYのレベル値とレベル値ファラオ。
レベルデータ値がWKYファラオ値のレベル(それは非現実的であっても)未満であることを確認し、ワン・レベルの値は、水平値WKYの整数倍です。
2列目:
被験者のmおよびnは知識の総数。
第三行:
n個の整数。i番目の主題の知識ポイントを行うのに必要な時間でI番目の整数ファラオ。
次に、2つの整数値P、Qを含むそれぞれがm行が存在します。pは、被験者の知識属するを表し、qは、そのトピックに対応するインセンティブ値を表します。
最後の行は、指定された時間です。
出力フォーマット
出力ファイルには、一行だけで得ることができるようにするために最大の賞値を表しています。
サンプル入力と出力
1 2 6 4 1 2 3 4 1 5 2 6 3 3 4 8 3 3 4 5 20
22
説明/ヒント
データの100%に、タイトルの合計数<= 5000、所定の時間<= 5000
01バックパックは基本的にあり
1の#include <cstdioを> 2の#include <iostreamの> 3 使用して 名前空間STDを、 4 int型SP1、SP2。 5 int型M、N、I、J。 6 int型の T、timee [ 10000 ]。 7 int型 all_time、F [ 10000 ]。 8 構造体ノード{ 9 int型ZSD、jlz。 10 }。 11 構造体ノードc [ 10000 ]。 12 のint main()の 13 { 14 のscanf(" %D%dの"、&SP1、およびSP2)。 15 のscanf(" %D%dの"、&M、&N) 16 のために(i = 1 ; iが<= N iが++ ) 17 { 18 のscanf(" %dの"、&T)。 19 timee [I] T *のSP2 / = SP1を。 20 } 21 用(i = 1 ; I <= M; iは++ ) 22 { 23 のscanf(" %d個の%dを"&C [i]は.zsd、&C [i]の.jlz)。 24個の C [i]は.zsd = timee [i]を.zsd [C]。 25 } 26 のscanf(" %dの"、&all_time)。 27 のために(i = 1 ; I <; = M I ++ ) 28 用(J = all_time; J> = C [i]は.zsd; j-- ) 29 F [J] = MAX(F [J]で、f [ JC [i]は.zsd] + C [i]の.jlz)。 30 のprintf(" %dの" 、F [all_time])。 31 リターン 0 ; 32 }