BZOJ 1572:[Usaco2009開く]仕事仕事のヒープ貪欲_戻って_

コード:

#include <ビット/ STDC ++ H> 
に#define setIO(S)freopenは(S ".IN"、 "R"、STDIN)
の#define MAXN 2000000 
の#define LL長い長い
名前空間stdを使用。
PRIORITY_QUEUE <LL、ベクトル<LL>、大きい<LL>> Q; 
構造体ノード
{ 
    LLヴァル、ティム。
}キー[MAXN]。
ブールCMP(ノード、ノードB)
{ 
    a.tim戻り<b.tim。
} 
int型のmain()
{ 
  // setIO( "入力")。
    LL ANS = 0。
    int型のn; 
    scanf関数( "%のD"、&N); 
    以下のために(; iは= N <; I = int型1 ++ I)
    { 
        scanf関数( "%のLLDの%のLLD"、&キー[I] .tim、&キー[I] .val)。
    } 
    ソート(1 + N +キー、+ 1キー、CMP); 
    (; iが<= N; I ++ iは1 = INT)のために
    {
        IF(キー[I] .tim <=(LL)Q.size())   
        { 
            IF(キー[I] .val> Q.top())
            { 
                ANS - = Q.top()。
                ANS + =キー[I] .val。
                Q.pop(); 
                Q.push(キー[I] .val)。
            } 
        } 
        { 
            ANS + =キー[I] .val。
            Q.push(キー[I] .val)。
        } 
    } 
    のprintf( "%LLDを\ n"、ANS)。
    0を返します。
}

  

おすすめ

転載: www.cnblogs.com/guangheli/p/10977924.html