トピックの背景
より多くの学生が私たちのUSACOレースで得点、より多くの我々は満足しています。
私たちは、人々があなたの助けを必要とする、できるだけ多くのポイントを獲得することができるように私たちのコンテストを設計しよう
タイトル説明
私たちは、同じスコアを取得するための時間と同量のエネルギーを必要とするトピックのセットを解決するために、タイトル争いのいくつかのタイプ、「種」はコンテストのトピックの集合を指しいずれかから選択することができます。あなたの仕事は、所定の時間に競争の問題を解決し、最大のスコアに合計時間を作り、各カテゴリから選択する必要がありますどのように多くの話題USACOのスタッフを、伝えるためにプログラムを書くことです。入力は、時間との競争、Mが含まれる(1 <= M <= 10,000)とN、1 <= N <= 10000「種」の数(心配しないで、あなたが長いゲームを持っています合宿に行きます)。各行は、「ジャンル」を記述するために、2つの整数の後にあって
このトピックの最初の溶液説明整数分を得ることができる(1 <=点<= 10000)、この課題を解決するために必要な第2の整数時間を記載(1 <=分<= 10000)。
あなたのプログラムは、私たちがそれぞれの「種類」からトピックを選択する必要がありますどのくらいの道を決定する必要があり、時間との戦いにおける最大のスコアを取得することが可能となります。
「タイプ」からトピックの任意の数は、任意の負でない数(0以上)であってもよいです。
最大スコアの可能なGETを計算します。
入出力フォーマット
入力フォーマット:1行目:M、時間と対象N--レースの「タイプ」の数。
二つの整数:2-N + 1つの行の各々「タイプ」のトピックのスコアと時間がかかります。
出力フォーマット:与えられた制限で最大のスコアを含む単一の行が得ることができます。
サンプル入力と出力
説明
NOCOWからタイトル翻訳。
USACOトレーニングセクション3.1
分析:
この質問は明らかにちょうどDPテンプレートをすることができ、バックパックを設定するには、DPテンプレートのタイトルをバックパックされます。
コード:
1の#include <cstdioを> 2の#include <cstdlib> 3の#include <CStringの> 4の#include <iostreamの> 5の#include <アルゴリズム> 6 使って 名前空間STD。 7 CONST INT M = 10005 。 8 int型M、N。 9 INT S [M]、T [M]、[M] F。 10インラインINT のget (){ 11 チャー C = GETCHAR()。 12の INTは RES = 0 。 13 一方、(C < ' 0 '|| C> ' 9 ')C = GETCHAR()。 14 一方の(c> = ' 0 ' && C <= ' 9 ' ){ 15件 のRES =(RES << 3)+(RES << 1)C- + ' 0 ' 。 16 C = GETCHAR()。 17 } 18の リターンRES。 19 } 20 、INT (){主 21 、M = GET()、N = 取得(); 22 のための(int型 I =1 ; iが<= N; iが++)S [I] = GET()、T [I] = GET ()。 23 のためには、(int型 i = 1 ; iがn = <; I ++ ) 24 のための(INT J = T [i]は、J <= Mであり、j ++ ) 25の F [J] = MAX([J]、F [JT F [ I] + S [I]); 26 のprintf(" %d個の\ n " 、F [M])。 27 // システム( "休止")。 28 リターン 0 ; 29 }