zoukankan      html  css  js  c++  java
  • 洛谷 P1168 中位数

    2019-06-02

    题目: 洛谷 P1168 中位数 :


    题目描述

    给出一个长度为NNN的非负整数序列AiA_iAi,对于所有1≤k≤(N+1)/21 ≤ k ≤ (N + 1) / 21k(N+1)/2,输出A1,A3,…,A2k−1A_1, A_3, …, A_{2k - 1}A1,A3,,A2k1的中位数。即前1,3,5,…1,3,5,…1,3,5,…个数的中位数。

    输入输出格式

    输入格式:

    111行为一个正整数NNN,表示了序列长度。

    222行包含NNN个非负整数Ai(Ai≤109)A_i (A_i ≤ 10^9)Ai(Ai109)。

    输出格式:

    (N+1)/2(N + 1) / 2(N+1)/2行,第iii行为A1,A3,…,A2k−1A_1, A_3, …, A_{2k - 1}A1,A3,,A2k1的中位数。

    输入输出样例

    输入样例#1:
    7
    1 3 5 7 9 11 6
    输出样例#1:
    1
    3
    5
    6

    说明

    对于20%20\%20%的数据,N≤100N ≤ 100N100;

    对于40%40\%40%的数据,N≤3000N ≤ 3000N3000;

    对于100%100\%100%的数据,N≤100000N ≤ 100000N100000。


    思想:

    每次输入保证输入有序,若为基数,输出中间值。

    方法:

    使用std::vector<Type> $,使用std::upper_bound(std::$.begin(),std::$.end(),Value),使用std::$.inster(std::vector<Type>::iterator,Value)

    说明:

    定义std::vector<Type> $储存信息

    使用std::upper_bound(std::$.begin(),std::$.end(),Value)找到第一个严格大于Value的值所在的迭代器

    使用std::$.inster(std::vector<Type>::iterator,Value)在迭代器std::vector<Type>::iterator前添加一个元素值为Value

    令新添加的数b一定有a<=b<c,所以找到第一个严格大于它的元素的迭代器,并在其前面添加该元素

    vector下标从0开始,所以奇数的中位数下标一定是[n/2]

    AC代码:

     1 //
     2 #include <bits/stdc++.h>
     3 using namespace std;
     4 typedef unsigned long long ll;
     5 #define ri register ll
     6 
     7 ll n;
     8 vector<ll> q;
     9 
    10 signed main()
    11 {
    12     ios::sync_with_stdio(0),cin.tie(0);
    13     cin>>n;
    14     for(ri i=1;i<=n;i++)
    15     {
    16         ri k;
    17         cin>>k;
    18         q.insert(upper_bound(q.begin(),q.end(),k),k);
    19         if(i%2==1)
    20         {
    21             cout<<q[i/2]<<'
    ';
    22         }
    23     }
    24     return 0;
    25 }
    26 //

    注意事项:

    inster添加元素时,添加在提供迭代器的前方。

    upper_bound()严格大于,参数左闭右开。

    vector下标从0开始。

  • 相关阅读:
    Stereo Matching文献笔记之(一):《Cross-Scale Cost Aggregation for Stereo Matching》读后感~
    机器视觉之 ICP算法和RANSAC算法
    基于语义约束与 Graph Cuts 的稠密三维场景 重建
    RANSAC算法详解
    三维重建技术在无人机方面的应用如何?三维重建未来的学术前景如何?
    尺度空间(Scale space)理论
    网速调控、带宽限制原理探究
    Cisco交换机IOS升级
    Nmap
    vi实用命令集
  • 原文地址:https://www.cnblogs.com/Vty66CCFF/p/10961669.html
Copyright © 2011-2022 走看看