codeforces 1284B。新年とアセントシーケンス(二分)

B.新年とアセントシーケンス

問題の意味:アセント上昇シーケンスの定義、シーケンスAのセットは、1 <I <J <N、ように愛<Ajとがあります。今n個のシーケンスを与え、N N ^ 2配列の組み合わせの2つの配列の組み合わせを見つけ、組み合わせの数は、アセント配列です。

思考2​​つのMAX、MINアレイは、最大値と最小値の各シーケンスの最大値とソートを記録されています。再びたびに2分間、アレイ内の各列の最大値と最小値は、数がそれより大きい全ての数値を見つけるために、このような組合せの新しいシーケンスが満たさアセント特性です。この配列はアセントの性質自体を満たした場合には、最大値を直接9999999設定され、最小値にデポジットが-1に設定されています。

ACコード:

1の#include <iostreamの>
 2の#include <ベクトル>
 3の#include <CStringの>
 4の#include <マップ>
 5の#include <アルゴリズム>
 6  使って 名前空間STDを、
7ベクター< INT > MAX。
8ベクトル< 整数 > MIN。
9  INT メイン(){
 10      のint T。
11      cinを>> トン。
12      のためにINTは iは= 0 ; I <T、I ++ ){
 13          int型の長さ;
14          CIN >>長さ;
15          長い 長い分= 999999999 16          長い 長い最大= - 1 17          int型の OK = 0 ;
18          のためのint型 J = 0 ; J <長J ++ ){
 19              長い CUR。
20              cinを>> CUR。
21              であれば(CUR>最小&& OK == 0 ){
 22                  OK = 1 23              }
 24              分= 分(分、CUR)。
25              マックス= MAX(最大、CUR)。
26          }
 27          であれば(OK == 0 ){
 28              MAX.push_back(最大)。
29              MIN.push_back(MIN)。  
30          }
 31          {
 32              MAX.push_back(9999999 )。
33              MIN.push_back( - 1 )。  
34          }
 35      }
 36      ソート(MAX.begin()、MAX.end())。
37の     長い 長い ANS = 0 38      のためにINT iが= 0 ; I <T、I ++ ){
 39の          ANS + =(MAX.end() - UPPER_BOUND(MAX.begin()、MAX.end()、MIN [I]))。
40          // coutの<< ANS <<てendl; 
41      }
 42      COUT << ANS。
43      リターン 0 44 }

おすすめ

転載: www.cnblogs.com/AaronChang/p/12185453.html