tokitsukazeと兵士

トピックリンク:

https://ac.nowcoder.com/acm/problem/50439

アイデア:

キューが少ない兵士の現在の数は、人々の数を必要とするよりも、とき、兵士は最小に入れた後、その後、トラバース、標準降順として、すべての兵士を必要とする第1のS(初心者の鶏肉料理はキューQAQについて考え始めるませんでした)逆プライオリティキューの値は、資格まで、人々(つまり、チームのヘッド)の最小のキューの容量値をポップします。横断中に記録された最大値。

問題解決コード:

1の#include <cstdioを>
 2の#include <iostreamの>
 3の#include <アルゴリズム>
 4の#include <cmath>
 5の#include < ストリング >
 6の#include <CStringの>
 7の#include <マップ>
 8の#include <キュー>
 9  使用 名前空間ははstd;
10  CONST  長い 長い MAXN = 1E5 + 7 11 typedefの長い 長いLL。
12  構造体13  {
 14      INT V。
15      INTS;
 16 } P [ 100010 ];
 17 PRIORITY_QUEUE < INT、ベクトル< INT >、大< INT >> P2; // 最小プライオリティキュー
18は BOOL CMP(A人、人B)
 19  {
 20は、     リターン AS> BS 、
 21である }
 22は 、INT (メイン)
 23である {
 24      INT N-;
 25      LL SUM = 0、MAXNUM = 0 ;
 26である      CIN >> N-、
 27      のためにINT I =。1 ; I <= N; I ++ 28      {
 29          CIN >> P [I] .V >> P [I] .S;
 30      }
 31で      並び替え(P + 1、P + 1 + 、N-、CMP);
 32      INT = I 1、I; <= N-I ++ 33である     {
 34がある         一方 = P [I] .S)(p2.size()>   // キューが以下の兵士の現在の数は、キュー・ポップの最小値を必要としないよりなると人
35          {
 36              SUM - = p2.top();
 37              p2.pop();
 38である         }
 39          SUM = +P [i]は.V。
40          p2.push(P [i]は.V)。
41          MAXNUM = MAX(MAXNUM、合計)。
42      }
 43      COUT << MAXNUM << ENDL。
44  
45      戻り 0 ;
46 }

 

おすすめ

転載: www.cnblogs.com/emhhbw/p/12566345.html