zoukankan      html  css  js  c++  java
  • BZOJ1753 [Usaco2005 qua]Who's in the Middle

    直接快排没意思。。。

    于是想写写"快速选择算法"。。。结果啊。。。

    调了1h。。。欧我去。。。至于么,已经蒟蒻到这种程度了?

    反正我是记住你了快速选择。。。!

     1 /**************************************************************
     2     Problem: 1753
     3     User: rausen
     4     Language: C++
     5     Result: Accepted
     6     Time:8 ms
     7     Memory:844 kb
     8 ****************************************************************/
     9  
    10 #include <cstdio>
    11 #include <algorithm>
    12  
    13 using namespace std;
    14 const int N = 10005;
    15 int n, a[N];
    16  
    17 inline int read(){
    18     int x = 0;
    19     char ch = getchar();
    20     while (ch < '0' || ch > '9')
    21         ch = getchar();
    22     while (ch >= '0' && ch <= '9'){
    23         x = x * 10 + ch - '0';
    24         ch = getchar();
    25     }
    26     return x;
    27 }
    28  
    29 int find(int l, int r, int rank){
    30     int i = l, j = r + 1;
    31     int x = a[l];
    32     while (1){
    33         while (a[++i] < x);
    34         while (x < a[--j]);
    35         if (i > j) break;
    36         swap(a[i], a[j]);
    37     }
    38     swap(a[l], a[j]);
    39     if (j - l + 1 == rank) return a[j];
    40     else if (j - l + 1 > rank) return find(l, j - 1, rank);
    41     else return find(j + 1, r, rank - (j - l + 1));
    42 }
    43  
    44 int main(){
    45     n = read();
    46     int i;
    47     for (i = 1; i <= n; ++i)
    48         a[i] = read();
    49     printf("%d
    ", find(1, n, (n + 1) >> 1));
    50     return 0;
    51 }
    View Code
    By Xs酱~ 转载请说明 博客地址:http://www.cnblogs.com/rausen
  • 相关阅读:
    重启进程
    linux如何查看端口被哪个进程占用?
    Web服务器磁盘满深入解析及解决
    基于Nginx实现访问控制、连接限制
    Tomcat线程模型分析及源码解读
    linux防火墙使用以及配置
    MySQL死锁及解决方案
    tcpdump 命令
    netperf 网络性能测试
    netstat 命令详解
  • 原文地址:https://www.cnblogs.com/rausen/p/4083903.html
Copyright © 2011-2022 走看看