RQNOJ PID2幸せJinming

タイトル説明

Jinming私は家族がキー必需品に新しい家を購入し、新しい部屋があり、非常に満足していますが、自分自身に非常に広々とした客室を捧げました。彼は昨日、より喜んで私の母ことになったと彼に言った:「あなたは、あなたがいる限りライン上のNドルを超えないように、最終決定権を持っているアイテムを購入するために、どのようにレイアウト、部屋を必要とします」今朝Jinmingは、予算を始めたが、彼は確かに限界N母元を超えてしまいますので、多くのものを購入したいです。このように、彼は重要度を指定し、等が5分割された各項目:1〜5は、最も重要ななど、第五、整数を示しました。彼はまた、インターネットからの各項目(整数ドルです)の価格を発見しました。彼は、積の和と各項目の最大の価格の重要度の(Nに等しくてもよい要素)N元素を超えることなく望んでいます。アイテムjはV [J]、[J] W重要度、k個の選択されたアイテムの合計、番号J1の順序... JKための第一のセットの価格は、その後、必要な合計である:V [J1] * W [J1] + ... + V [JK] * [JK]買い物リストの要件を満たすように設計されたJinmingを助けてくださいwは。

入力形式

2つの正の整数として空間によって分離された第1行目から1つの入力:

Nメートル

(ここで、Nは、(<30000)から購入アイテムの所望の数に合計金額、M(<25)を表します。)

列2から列M + 1、j番目の行は、番号j-1を与えます

基本データ項目は、各列は、二つの非負整数を有します

VP

(vがアイテム(v≤10000)の価格を表し、pは、物品の重要度を示している(1〜5))

出力フォーマット

出力のみの正の整数、および価格については、製品の重要性は、金額の合計額に項目の合計を超えていません

最大値(<100 000 000)

サンプル入力

5 1000
800 2
400 5
300 5
400 3
200 2

サンプル出力

3900

問題解決のためのアイデア

  このタイトルは、ナップザック問題を見てですが、私はただ貪欲に断固として始まっかそこらだけで30を行います。

  この問題は、バックパック01の変形例であり、状態遷移方程式:F [J] =最大{F [J]、F [JW [I] + W [I] * V [I]}。

コードは以下の通りです

1の#include <iostreamの>
 2の#include <アルゴリズム>
 3  使用して 名前空間STDを、
4  構造体ノード{
 5      int型V、W、S。 
6 } T [ 40010 ]。
7  のint F [ 40010 ]。
8  INT メイン(){
 9      int型N、M。
10      CIN >> N >> M。
11      のためにint型 I = 1 ; I <= M; iが++ ){
 12          のint X、Y。
13          CIN >> X >> Y。
14         T [i]は.V = xと; T [i]は.W = Y。T [i]は.S = X * Y。
15      }
 16      のためにint型 I = 1 ; I <= M; iが++ ){
 17          のためにint型 J = N; J> = T [i]は.V; j-- ){
 18              F [J] = MAX(F [J]、[J - T [i]は.V] F + [I] .S)T。
19          }
 20      }
 21      COUT << F [N] << ENDL。
22      リターン 0 ;
23 }
ハッピーJinming

 


 

おすすめ

転載: www.cnblogs.com/zoom1109/p/11041466.html