【HNOI2003】オペレーティングシステムのプライオリティキューの使用

タイトルます。https://www.cometoj.com/problem/1046

#include <ビット/ STDC ++ H>
 使用して 名前空間STDを、
typedefの長い 長いLL。
構造体ノード{
     int型のID、daoda、xiaohao、ヴァル。
    ブール 演算子 <(constのノード&B)のconst {
         場合(ヴァル== b.val)
             戻り daoda> b.daoda。
        戻るヴァル< b.valを。
    } 
}。
構造体NODE {
     int型のID、TI。
}。
ベクトル <NODE> ANS; 
PRIORITY_QUEUE <ノード> QUE。
int型メイン(){ 
    ノードp。
    int型 lasttime = 0 ;
    一方、(〜のscanf(" %D%D%D%D "、&​​p.id、&p.daoda、&p.xiaohao、&p.val)){
         場合(que.empty()){ 
            lasttime = p.daoda。
            que.push(P)。
            続け; 
        } 
        // coutの<< "!!!!" <<てendl; 
        int型スムティ= p.daoda- lasttime。
        int型クルティ= lasttime。
        ノードuの。
        ノードq; 
        一方、(!que.empty()&&スムティ> = que.top()。xiaohao){ 
            U =que.top(); 
            que.pop(); 
            スムティ - = u.xiaohao。
            クルティ + = u.xiaohao。
            q.id = u.id。
            q.ti = クルティ。
            ans.push_back(Q)。
        } 
        もし(!que.empty()&&スムティ= 0 ){ 
            U = que.top()。
            que.pop(); 
            u.xiaohao = MAX(0、u.xiaohao- スムティ)。
            クルティ + = u.xiaohao。
            もし(u.xiaohao> 0 
                que.push(U)。
            { 
                q.id = u.id。
                q.ti = クルティ。
                ans.push_back(Q)。
            } 
        } 
        que.push(P)。
        lasttime = p.daoda。
    } 
    ながら(!que.empty()){
         // COUT << "!!" << ENDL。
        ノードU = que.top()。
        que.pop(); 
        ノードq; 
        q.id = u.id。
        q.ti = lasttime + u.xiaohao。
        ans.push_back(Q)。
        lasttime + = u.xiaohao。 
    } 
    ためのint型 I = 0を私は++;)私は(ans.sizeを< {)
        のprintf(" %D%D \ n " 、ANS [I] .ID、ANS [I] .ti)。
    } 
    戻り 0 
}
コードの表示

 

おすすめ

転載: www.cnblogs.com/starve/p/11505813.html