zoukankan      html  css  js  c++  java
  • BNUOJ-26475 Cookie Selection 堆,线段树等

      题目链接:http://www.bnuoj.com/bnuoj/problem_show.php?pid=26475

      题意:每次输入一个操作,如果是数字,那么放入一个容器中,如果是#号,取出当前容器中的中间值。。

      数据结构基础题,显然维护两个堆就可以了,两个堆的size大小不超过1...

      其实各种数据结构都可以搞,比如线段树,先离线然后离散,然后线段树记录size,二分查找。。

     1 //STATUS:C++_AC_856MS_3192KB
     2 #include <functional>
     3 #include <algorithm>
     4 #include <iostream>
     5 //#include <ext/rope>
     6 #include <fstream>
     7 #include <sstream>
     8 #include <iomanip>
     9 #include <numeric>
    10 #include <cstring>
    11 #include <cassert>
    12 #include <cstdio>
    13 #include <string>
    14 #include <vector>
    15 #include <bitset>
    16 #include <queue>
    17 #include <stack>
    18 #include <cmath>
    19 #include <ctime>
    20 #include <list>
    21 #include <set>
    22 //#include <map>
    23 using namespace std;
    24 //#pragma comment(linker,"/STACK:102400000,102400000")
    25 //using namespace __gnu_cxx;
    26 //define
    27 #define pii pair<int,int>
    28 #define mem(a,b) memset(a,b,sizeof(a))
    29 #define lson l,mid,rt<<1
    30 #define rson mid+1,r,rt<<1|1
    31 #define PI acos(-1.0)
    32 //typedef
    33 typedef long long LL;
    34 typedef unsigned long long ULL;
    35 //const
    36 const int N=600010;
    37 const int INF=0x3f3f3f3f;
    38 const int MOD=1e9+7,STA=8000010;
    39 //const LL LNF=1LL<<60;
    40 const double EPS=1e-8;
    41 const double OO=1e15;
    42 const int dx[4]={-1,0,1,0};
    43 const int dy[4]={0,1,0,-1};
    44 const int day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    45 //Daily Use ...
    46 inline int sign(double x){return (x>EPS)-(x<-EPS);}
    47 template<class T> T gcd(T a,T b){return b?gcd(b,a%b):a;}
    48 template<class T> T lcm(T a,T b){return a/gcd(a,b)*b;}
    49 template<class T> inline T lcm(T a,T b,T d){return a/d*b;}
    50 template<class T> inline T Min(T a,T b){return a<b?a:b;}
    51 template<class T> inline T Max(T a,T b){return a>b?a:b;}
    52 template<class T> inline T Min(T a,T b,T c){return min(min(a, b),c);}
    53 template<class T> inline T Max(T a,T b,T c){return max(max(a, b),c);}
    54 template<class T> inline T Min(T a,T b,T c,T d){return min(min(a, b),min(c,d));}
    55 template<class T> inline T Max(T a,T b,T c,T d){return max(max(a, b),max(c,d));}
    56 //End
    57 
    58 struct cmp{
    59     bool operator()(const int a,const int b){
    60         return a<b;
    61     }
    62 };
    63 priority_queue<int,vector<int>,cmp > q1;
    64 priority_queue<int,vector<int>,greater<int> > q2;
    65 
    66 int main()
    67 {
    68  //   freopen("in.txt","r",stdin);
    69     int i,j,a,cnt=0;
    70     char s[20];
    71     q1.push(-INF);q2.push(INF);
    72     while(~scanf("%s",s))
    73     {
    74         if(s[0]=='#'){
    75             if(cnt){
    76                 printf("%d
    ",q1.top());
    77                 q1.pop();
    78             }
    79             else {
    80                 printf("%d
    ",q2.top());
    81                 q2.pop();
    82             }
    83             cnt^=1;
    84         }
    85         else {
    86             sscanf(s,"%d",&a);
    87             q1.push(a);
    88             cnt^=1;
    89         }
    90         while(q1.size()>q2.size()){
    91             q2.push(q1.top());q1.pop();
    92         }
    93         while(q1.size()<q2.size()){
    94             q1.push(q2.top());q2.pop();
    95         }
    96     }
    97     return 0;
    98 }
  • 相关阅读:
    洛谷 P1194 飞扬的小鸟 题解
    洛谷 P1197 星球大战 题解
    洛谷 P1879 玉米田Corn Fields 题解
    洛谷 P2796 Facer的程序 题解
    洛谷 P2398 GCD SUM 题解
    洛谷 P2051 中国象棋 题解
    洛谷 P1472 奶牛家谱 Cow Pedigrees 题解
    洛谷 P1004 方格取数 题解
    洛谷 P2331 最大子矩阵 题解
    洛谷 P1073 最优贸易 题解
  • 原文地址:https://www.cnblogs.com/zhsl/p/3282012.html
Copyright © 2011-2022 走看看