zoukankan      html  css  js  c++  java
  • hdu 4006 The kth great number(优先队列)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4006

    题目大意:

      第一行 输入 n k,后有 n 行,对于每一行有两种状态 ,①“I x” : 插入 x ② “Q” : 输出当前 第 K大的数

    解题思路:

      利用优先队列保证插入新数据后的队列是有序的。

      重点:保证 k 个数的队列就行。加一个标志 flag_k; 

    I:  如果 flag_k<k,则将新输入的数放入队列中。

       否则判断第k个数是否小于新输入的数,如果小于,则队头出队,新输入的入队:保证队列中第k个数一直是最大的。

    Q:  输出队头即可。 

    AC Code:

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 struct Node
     4 {
     5     int key;
     6     friend bool operator < (Node a,Node b)
     7     {
     8         return a.key>b.key;
     9     }
    10 };
    11 int main()
    12 {
    13     int n,k;
    14     while(scanf("%d%d",&n,&k)!=EOF)
    15     {
    16         priority_queue <Node> q;
    17         int flag_k=0;
    18         while(n--)
    19         {
    20             char c;
    21             cin>>c;
    22             if(c=='I')
    23             {
    24                 Node tem;
    25                 scanf("%d",&tem.key);
    26                 if(flag_k<k)
    27                 {
    28                     flag_k++;
    29                     q.push(tem);
    30                 }
    31                 else
    32                 {
    33                     if(tem.key>q.top().key)
    34                     {
    35                         q.pop();
    36                         q.push(tem);
    37                     }
    38                 }
    39             }
    40             else if(c=='Q')
    41                 printf("%d
    ",q.top().key);
    42         }
    43     }
    44     return 0;
    45 }
  • 相关阅读:
    CSV
    矛与盾热血江湖实现喊话功能
    IDA 使用小结
    OD 命令行插件支持的命令
    Qt TreeView
    矛与盾内存数据的分析
    Windows 内核 I/O 端口操作
    矛与盾注入到目标进程
    Qt 多级menu
    C# 美元转中文
  • 原文地址:https://www.cnblogs.com/A--Q/p/5915719.html
Copyright © 2011-2022 走看看