http://acm.hdu.edu.cn/showproblem.php?pid=1171
HDUビッグイベント
制限時間:5000分の10000 MS(Javaの/その他)メモリの制限:32768分の65536 K(Javaの/その他)
の合計提出(S):58312受理提出(S):19584
問題の説明
今日では、我々はすべてのコンピュータ・カレッジはHDUで最大の部門であることを知っています。しかし、多分あなたはコンピュータ専門学校はこれまで、2002年に専門学校やソフトウェア・カレッジに分割されていたことを知らない
分割は絶対にHDUで大きなイベントです!同時に、それはあまりにも面倒なものです。すべての施設が半分に行かなければなりません。まず、すべての施設が評価され、2つの施設は、それらの値が同じであれば同じであると考えられています。N(0 <N <1000)設備の種類(異なる値、異なる種類)があることが想定されます。
分割は絶対にHDUで大きなイベントです!同時に、それはあまりにも面倒なものです。すべての施設が半分に行かなければなりません。まず、すべての施設が評価され、2つの施設は、それらの値が同じであれば同じであると考えられています。N(0 <N <1000)設備の種類(異なる値、異なる種類)があることが想定されます。
入力
入力は複数のテストケースが含まれています。各テストケースは、数N( -異なる設備の総数0 <N <= 50)で始まります。次のNラインは整数V(0 <V <=施設の50 --value)及び整数M(設備の0 <M <= 100 --corresponding数)をそれぞれ含みます。あなたは、すべてのVが異なっていると仮定することができます。
負の整数で始まるテストケースは、入力を終了し、このテストケースは、処理されるべきではありません。
負の整数で始まるテストケースは、入力を終了し、このテストケースは、処理されるべきではありません。
出力
それぞれのケースについて、専門学校やソフトウェア・カレッジの値を示す二つの整数AとBを含む印刷1行がそれぞれ取得します。A及びBは、できるだけ等しくなければなりません。同時に、あなたはAがBよりも小さくないことを保証すべきです
サンプル入力
2 10 1 20 1 3 10 1 20 2 30 -1
サンプル出力
20 10 40 40
著者
LCY
第1の2次元01ナップザック寸法のみFを使用する[I-1]、F [i]は、最初の次元は、スクロール・アレイを使用して、除去することができます。
https://www.cnblogs.com/zyacmer/p/9961710.html
// の#include <ビット/ STDC ++。H> の#include <cstdioを> する#include <CStringの> する#include <cmath> の#include <アルゴリズム> の#include <iostreamの> する#include <アルゴリズム> の#include <iostreamの> する#include <cstdioを> 書式#include < 文字列 > の#include <CStringの> 書式#include <stdio.hに> する#include <キュー> の#include <スタック> 。 #include <地図> の#include < 設定 > の#include < 文字列・H> の#include <ベクトル> #defineする MEを(X、Y)のmemset(X、Y、はsizeof(X)) の#define SF(N)のscanf(」 %のD」、&N) の#define担当者(I、N)のためには、(i = 0、int型、iがN <; I)が++ の#define INF 0x3f3f3f3f の#define MOD十億七 の#define PIのACOS(-1)を 使用して 名前空間STDを、 typedefの長い 長いLL。 int型の DP [ 255555 ]。 INT W [ 5009 ]。 int型のmain() { int型のn; 一方、(〜のscanf(" %d個"、&N)&& N> 0 ) { int型 I = 1、I = 0 ; memsetの(DP、0、はsizeof (DP))。 以下のために(int型 i = 0 ; iがn <; iは++ ) { int型V、どうか。 scanf関数(" %d個の%d個"、&V、&NUM); しばらく(num-- ) { W [L ++] = V。 合計 + = V; } } 以下のために(int型 i = 1 ; iはLを<; iは++ ) { 用(INT J =和/ 2 ; J> = W [I]; j-- ) { DP [J] = MAX(DP [J]、DP [JW [I] + [I] W)。 } } COUT <<和- DP [和/ 2 ] << " " << DP [和/ 2 ] << ENDL。 } リターン 0 ; }