G - 無料パイ
1176 - HDU
トピックへのリンク:https://vjudge.net/contest/68966#problem/G
トピック:
彼は空が落ちないだろうと述べたが、帰って歩道を歩いて一日のゲームボーイは、突然たくさんに空からパイをたくさん落ちます。彼は、彼らが彼の横10メートルの範囲内で、このパイが出て他の場所ではない、ゲームボーイ文字が素晴らしいと言います。グラウンドの外パイ場合は、もちろん食べられないので、ゲームボーイはすぐに迎えにバッグ本体を削除します。道の両側には立つことができないので、しかし、ので、彼は唯一のコースを取ることができます。古いゲームボーイとしては、通常、私は、ゲーム内の軽快マスターは、実際には動きが特に遅い神経である、とだけ毎秒モバイルでパイを落下キャッチする1メートルの範囲を超えていないものの、ゲームをプレイするために部屋に滞在します。今、アイコンとして歩道の位置座標:
問題を簡単にするために、パイは、0-10 11の位置を下降させ、時間の次の期間中と仮定する。ゲームボーイスタンディングこの5の冒頭に位置するので、第一、第二、彼はパイの位置で唯一の三つの位置4,5,6を受けました。Qのゲームボーイはパイの数まで取ることができますか?(彼のバックパックと仮定するとパイの無限の数を保持することができます)
問題を簡単にするために、パイは、0-10 11の位置を下降させ、時間の次の期間中と仮定する。ゲームボーイスタンディングこの5の冒頭に位置するので、第一、第二、彼はパイの位置で唯一の三つの位置4,5,6を受けました。Qのゲームボーイはパイの数まで取ることができますか?(彼のバックパックと仮定するとパイの無限の数を保持することができます)
入力データの入力複数のセット。第一の正の整数へのデータの各セットの列N(0 <N <100000) 、 N本の経路上にパイを表すがあります。行ダウンN接合、各行は、二つの整数xを有し、T(0 <T < 100000)は、 それが点xでオフT秒のパイを示します。同じポイントで同じ第二は、より多くのパイを落ちることがあります。n = 0で、入力端。
出力の一つの行に対応する入力データの各セットの出力。出力整数m、mはゲームボーイがパイに取ることができ表します。
ヒント:より大きなこの質問にデータを入力し、タイムアウトすることがありCINと、scanf関数で読み推奨。
サンプル入力
6 5 1 4 1 6 1 7 2 7 2 8 3 0サンプル出力
4つの
アイデア:DP [T] [x]はt秒における位置xの数を表すが、プロセスを持っています
類似:
5(0)
・4. 5. 6(LS)。
3. 4. 5. 6. 7(2S)。
2. 3. 4. 5. 6. 7. 8(3S)
1 2 3 4 5 6 7 8 9(4S)。
0 1 2 3 4 5 6 7 8 9 10(5S)
// // 2019年8月8日に羽生によって作成されます。 // する#include <アルゴリズム> 書式#include <iostreamの> の#include <cstdioを> する#include <CStringの> の#include <キュー> の#include < 設定 > 書式#include <math.h>の 書式#include <マップ> 使用して 名前空間はstd; typedefの長い 長いLL。 const int型 MAXN = 1E5 + 7 。 #define MAX 0x3f3f3f3f INT のmain() { int型N; int型 DP [MAXN] [20 ]。 一方、(〜のscanf(" %d個"、&N)&& N) { memsetの(DP、0、はsizeof (DP))。 int型のx、T; int型 MAXT = 0 ; 以下のために(int型私= 0 ; iがN <; Iは++ ) { scanf関数(" %D%D "、およびX&T)。 DP [T] [X] ++ ; もし(T> MAXT) MAXT = T; //找出最大时间 } 用(INT I = maxt- 。1 ; I> = 0 ; i-- ) { ため(INT J = 0 ; J <= 10 ; J ++ ) { DP [I] [J] + = MAX(DPは、[I +は1。 ] [+ J 。1 ]、MAX(DP [Iが+ 。1 ] [J]は、DPは、[I +は1である。 ] [J- 1 ])); //最大プラス上の3箇所の現在の数を比較 } } のprintf(" D%\ N- "、DP [ 0 ] [ 5 ]); } 戻り 0 ; }