タイトル説明
陳は、才能のある子で、彼の夢は、世界で最も偉大な医師になることです。この目的のために、彼は教師として最も権威のある医師の近くに崇拝したかったです。医師は、彼の資格を決定するために、彼に問題を与えました。医師は彼女が彼に言うハーブの完全な洞窟に連れて行った:.「子供たちは、この洞窟は、いくつかの異なるハーブを持って、それぞれの植物を選ぶことはある程度の時間が必要で、各工場は独自の価値を持っていると私は与えるだろうあなたがスマートな子供であれば、あなたはいくつかの時間、この時間の間に、あなたには、いくつかのハーブを選ぶことができ、最大は、あなたはハーブの合計値を作るために取られるべきです。」
あなたは陳ている場合は、このタスクを達成することができますか?
入力形式
最初のライン2 2整数T(1 \ルT \ル1000)T (1 ≤ T ≤ 。1 0 0 0 )とM(1 \ルM \ル100)M (1 ≤ M ≤ 1 0 0 )スペースで区切られた、T Tは、ハーブの総時間を表し、使用することができるM の数Mは、ハーブの洞窟を表します。
次のM M 2行それぞれを含む。1 。1 100 。1 0 0(含む。1 1、100 。1 0 0の整数)は、それぞれ歪みの値は、ハーブの時間にこの歪み及びハーブを選ん表します。
出力フォーマット
1 指定された期間内での最大合計値を表す整数でハーブを取ることができます。
サンプル入力と出力
70 3 71 100 69 1 1 2
3
説明/ヒント
データの30%、M \ル10 M ≤ 1。0。
すべてのデータのために、M \ル100 M ≤ 。1 0 0。
グループIIIのタイトルのNOIP2005人気
ソリューション:のみ、私は実際にこの質問をしなかった見つけます。(問黒い顔をマーク?)
今夜のパンチトピック(レビューレビューのタイトルバックパック笑......)それに後方列挙することを忘れないでください。
書式#include <cstdioを> する#include <iostreamの> の#include <cmath> の#include <CStringの> の#include <cstdlib> 書式#include <アルゴリズム> 書式#include <キュー> 使用して 名前空間はstd; CONSTの INT N = 1002 。 int型M、N、F [N]。 INT [N]、B [N]。 INT メイン(){ freopenは(" 1048.in "、" R " 、STDIN)。 freopenは(" 1048.out "、" W " " %d個の%のD "、&M、&N) 以下のために(int型 i = 1 ; iが<= N; iが++ ) のscanf(" %D%dの"、および[I]、&B [I])。 以下のために(int型 I = 1 ; <;私は++ = N ) のための(INT ; = [i]は、j-- J = M J> ) F [J] = MAX(F [J]、F [JA [Iを] + B [I])。 printf(" %dの" 、F [M])。 リターン 0 ; }