青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

coreBugZJ

此 blog 已棄。

買票問題,福州大學第八屆程序設計競賽 之 D,FZU 2029

Problem 2029 買票問題

Accept: 8 Submit: 56
Time Limit: 5000 mSec Memory Limit : 32768 KB

 Problem Description

過年回家買票又排起了長隊。剛開始隊列為空的。 有四種情況: 1.隊尾加進了一個編號為a,忍耐度為 b 的人,所有人的編號都不同。 2.隊首的人買完票走了。 3.隊列中忍耐度最低的人離開了隊列。 4.在隊伍變化的過程中,編號為x的人想知道他前面有多少人,如果人數大于 y 則他離開隊伍。 所有人的編號和忍耐度都是一個整數(保證可以使用有符號32位整型保存),且都是唯一的。

 Input

輸入數據包含多組測試數據輸入數據第一行T表示操作的個數。(T <= 100000) 接著T行, add a b 表示隊伍尾加入 編號a忍耐度b的人(a,b保證可以使用有符號32位整型保存) pop 隊首的人買完票走了,如果隊列為空則不執行此操作。 leave 隊列中忍耐度最低的人離開了隊列,如果隊列為空則不執行此操作。 check x y在隊伍變化的過程中,編號為x的人想知道他前面有多少人,如果人數大于 y 則他離開隊伍,如果隊列不含編號為x的人不執行此操作。(x,y保證可以使用有符號32位整型保存)

 Output

對于第四種操作 輸出編號為x的人前面的人數。

 Sample Input

10
add 5 1
add 4 2
add 3 3
add 2 4
add 1 5
check 2 5
leave
check 2 1
pop
check 1 5

 Sample Output

3
2
1

 



小根堆求最小值,樹狀數組求個數,map 求映射(注意加注釋的幾個erase,沒有就超時,鄙視卡常數的!!!!)。



  1#include <iostream>
  2#include <cstdio>
  3#include <vector>
  4#include <queue>
  5#include <cstring>
  6#include <map>
  7
  8using namespace std;
  9
 10const int T = 100009;
 11
 12struct  Peo
 13{
 14        Peo( int _a=0int _b=0int _q=0 ) : a(_a), b(_b), q(_q) {}
 15        int  a, b, q;
 16}
;
 17
 18class MinCmp
 19{
 20public : 
 21        bool operator()( const Peo &a, const Peo &b );
 22}
;
 23bool MinCmp::operator()( const Peo &a, const Peo &b ) {
 24        return a.b > b.b;
 25}

 26
 27int qh, qt, inq[ T ], sq[ T ], q2a[ T ];
 28map< intint > a2q;
 29priority_queue< Peo, vector< Peo >, MinCmp > heap;
 30
 31#define lowbit(i)  (i&((i-1)^i))
 32
 33void st_add( int i, int delta ) {
 34        while ( i < T ) {
 35                sq[ i ] += delta;
 36                i += lowbit(i);
 37        }

 38}

 39
 40int st_sum( int i ) {
 41        int s = 0;
 42        while ( i > 0 ) {
 43                s += sq[ i ];
 44                i -= lowbit( i );
 45        }

 46        return s;
 47}

 48
 49void init() {
 50        while ( ! heap.empty() ) {
 51                heap.pop();
 52        }

 53        qh = qt = 1;
 54        a2q.clear();
 55        memset( inq, 0sizeof(inq) );
 56        memset( sq,  0sizeof(sq)  );
 57}

 58
 59void add( int a, int b ) {
 60        a2q[ a ] = qt;
 61        q2a[ qt ] = a;
 62        heap.push( Peo( a, b, qt ) );
 63        inq[ qt ] = 1;
 64        st_add( qt, 1 );
 65        ++qt;
 66}

 67
 68void pop() {
 69        while ( (qh<qt) && (inq[qh]==0) ) {
 70                ++qh;
 71        }

 72        if ( qh < qt ) {
 73                inq[ qh ] = 0;
 74                a2q.erase( q2a[ qh ] );////////////////////////////
 75                st_add( qh, -1 );
 76                ++qh;
 77        }

 78}

 79
 80void leave() {
 81        Peo p;
 82        while ( (!heap.empty()) && (inq[heap.top().q]==0) ) {
 83                heap.pop();
 84        }

 85        if ( !heap.empty() ) {
 86                p = heap.top();
 87                inq[ p.q ] = 0;
 88                st_add( p.q, -1 );
 89                a2q.erase( q2a[ p.q ] );/////////////////////////////////
 90        }

 91}

 92
 93void check( int x, int y ) {
 94        map< intint >::iterator  ite = a2q.find( x );
 95        if ( ite != a2q.end() ) {
 96                int q = ite->second;
 97                int s = st_sum( q ) - 1;
 98                printf( "%d\n", s );
 99                if ( s > y ) {
100                        inq[ q ] = 0;
101                        st_add( q, -1 );
102                        a2q.erase( ite );////////////////////////////
103                }

104        }

105}

106
107int main() {
108        int t, a, b;
109        char cmd[ 100 ];
110        while ( scanf( "%d"&t ) == 1 ) {
111                init();
112                while ( t-- > 0 ) {
113                        scanf( "%s", cmd );
114                        if ( cmd[ 0 ] == 'a' ) {
115                                scanf( "%d%d"&a, &b );
116                                add( a, b );
117                        }

118                        else if ( cmd[ 0 ] == 'p' ) {
119                                pop();
120                        }

121                        else if ( cmd[ 0 ] == 'l' ) {
122                                leave();
123                        }

124                        else if ( cmd[ 0 ] == 'c' ) {
125                                scanf( "%d%d"&a, &b );
126                                check( a, b );
127                        }

128                }

129        }

130        return 0;
131}

132

posted on 2011-04-30 23:34 coreBugZJ 閱讀(623) 評論(1)  編輯 收藏 引用 所屬分類: ACM

Feedback

# re: 買票問題,福州大學第八屆程序設計競賽 之 D,FZU 2029 2011-05-03 01:26 lijunle

這題可以用線段樹做,代碼量很大,但是需時會降低。

另外,我想問一下這場的《計數問題》怎么做?
http://acm.fzu.edu.cn/problem.php?pid=2031

如果方便,請通過郵件告訴我。謝謝。  回復  更多評論   


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产一区二区三区久久久| 一本不卡影院| 亚洲高清资源综合久久精品| 欧美日韩另类在线| 免费亚洲一区| 久久精品在线观看| 午夜欧美不卡精品aaaaa| 亚洲视频综合| 亚洲精品欧美激情| 亚洲另类视频| 亚洲激情成人| 亚洲日韩视频| 美女黄毛**国产精品啪啪| 欧美精品在线一区二区| 久久婷婷国产综合国色天香| 久久久久九九九| 久久久亚洲高清| 老司机午夜精品视频| 欧美成人亚洲| 亚洲午夜日本在线观看| 亚洲天堂成人在线观看| 亚洲尤物视频网| 亚洲在线一区| 久久嫩草精品久久久精品| 欧美国产日韩精品免费观看| 99re8这里有精品热视频免费| 中文网丁香综合网| 久久综合电影| 国产精品亚洲第一区在线暖暖韩国| 国模 一区 二区 三区| 亚洲第一精品夜夜躁人人爽| 亚洲无线视频| 欧美xxx成人| 亚洲一区二区成人| 欧美成人福利视频| 国产亚洲午夜| 亚洲国产综合视频在线观看| 亚洲欧美日本另类| 蜜臀a∨国产成人精品| 亚洲精品三级| 久久久久青草大香线综合精品| 一本色道久久| 久久精品系列| 在线中文字幕不卡| 久久精品99国产精品酒店日本| 欧美国产日韩一区二区在线观看| 夜夜爽www精品| 久久久精品性| 国产伦精品一区二区三区四区免费| 红桃视频欧美| 欧美一区二区视频97| 亚洲茄子视频| 欧美一区二区三区免费看| 欧美极品在线播放| 亚洲高清视频在线观看| 久久一区二区三区超碰国产精品| 一区二区激情小说| 欧美高清成人| 亚洲欧美精品在线| 欧美激情网友自拍| 欧美精品三级在线观看| 亚洲国产精品成人综合| 久久久久久精| 亚洲天堂第二页| 欧美日韩高清在线观看| 久久av在线看| 国产精品久久久一区二区三区 | 欧美日本在线一区| 久久久精彩视频| 亚洲欧美卡通另类91av| 欧美激情第五页| 亚洲国产欧美一区二区三区丁香婷| 午夜视频一区| 日韩视频精品在线| 女人香蕉久久**毛片精品| 欧美伊人久久久久久久久影院| 国产一级一区二区| 久久在线免费观看视频| 免费在线观看精品| 蜜桃精品一区二区三区 | 久久av二区| 国产视频在线观看一区二区| 久久www成人_看片免费不卡| 久久精品成人| 一区二区在线观看视频在线观看| 欧美中文字幕视频在线观看| 久久国产精品网站| 国内精品国产成人| 欧美r片在线| 欧美va亚洲va日韩∨a综合色| 女女同性女同一区二区三区91| 亚洲黄色成人久久久| 亚洲第一区在线观看| 欧美日产一区二区三区在线观看| 亚洲黄一区二区| 91久久视频| 欧美日韩在线视频一区| 欧美在线视频二区| 久久久99国产精品免费| 亚洲精品中文字幕有码专区| 一区二区三区久久久| 国产欧美在线播放| 亚洲第一久久影院| 亚洲欧美国产另类| 亚洲高清激情| 亚洲国产精品成人一区二区| 欧美不卡一卡二卡免费版| 欧美不卡福利| 午夜宅男久久久| 久久九九热免费视频| 日韩一二三区视频| 亚洲一二三区精品| 99国产精品99久久久久久| 亚洲综合大片69999| 91久久黄色| 欧美在线播放视频| 中文在线资源观看视频网站免费不卡| 久久久伊人欧美| 欧美绝品在线观看成人午夜影视| 香蕉免费一区二区三区在线观看| 久久久久久久久岛国免费| 亚洲人成亚洲人成在线观看| 午夜日韩视频| 日韩视频专区| 牛牛影视久久网| 牛牛国产精品| 国产一区91精品张津瑜| 一本色道久久综合| 亚洲国产精品一区二区第四页av | 欧美视频专区一二在线观看| 免费视频一区| 亚洲第一黄色网| 性做久久久久久久久| 亚洲欧美偷拍卡通变态| 亚洲女女女同性video| 宅男在线国产精品| 欧美久久久久免费| 91久久嫩草影院一区二区| 最新亚洲视频| 欧美freesex交免费视频| 亚洲精品一二三区| 狼狼综合久久久久综合网| 久久一区二区三区国产精品| 国产字幕视频一区二区| 久久国产精品电影| 久久偷窥视频| 久久久蜜桃一区二区人| 欧美影院视频| 国产日韩在线看| 亚洲女优在线| 久久久久久午夜| 亚洲欧美视频在线观看视频| 国产精品久久久久久久久久ktv | 亚洲免费观看在线视频| 亚洲激情国产| 欧美大片免费久久精品三p | 欧美激情第三页| 国产一区二区三区av电影| 欧美在线不卡| 欧美国产欧美综合| 在线视频亚洲一区| 国产精品资源| 久久中文在线| 亚洲精品乱码久久久久久日本蜜臀| 久久国产精彩视频| 女主播福利一区| 国产精品99久久久久久白浆小说| 欧美午夜宅男影院| 欧美一区二视频| 亚洲激情午夜| 国产精品高潮呻吟久久av无限| 亚洲一区二区视频| 美女免费视频一区| 国产亚洲免费的视频看| 久久国产精品一区二区三区| 国产精品系列在线| 亚洲综合色丁香婷婷六月图片| 在线一区欧美| 国产精品久久国产精品99gif | 久久精品国产免费观看| 欧美成人激情视频| 99精品欧美一区二区三区综合在线| 亚洲欧美日韩另类精品一区二区三区 | 久久国产免费| 亚洲人成网在线播放| 国产精品国产三级国产| 亚洲欧美另类中文字幕| 亚洲精品一区二区三区福利 | 亚洲高清视频中文字幕| 欧美日韩xxxxx| 欧美一级二级三级蜜桃| 亚洲欧洲中文日韩久久av乱码| 欧美一区二区视频在线观看2020| 欧美金8天国| 久久精品青青大伊人av| 亚洲精品视频免费观看| 美女福利精品视频| 欧美一区影院| 亚洲免费网址| 一区二区三区四区五区精品|