首页 > 其他分享 >洛谷刷题之P1168

洛谷刷题之P1168

时间:2024-09-06 22:50:22浏览次数:11  
标签:le 洛谷 int 样例 中位数 vector 100 P1168 刷题

中位数

题目描述

给定一个长度为 N N N 的非负整数序列 A A A,对于前奇数项求中位数。

输入格式

第一行一个正整数 N N N。

第二行 N N N 个正整数 A 1 … N A_{1\dots N} A1…N​。

输出格式

共 ⌊ N + 1 2 ⌋ \lfloor \frac{N + 1}2\rfloor ⌊2N+1​⌋ 行,第 i i i 行为 A 1 … 2 i − 1 A_{1\dots 2i - 1} A1…2i−1​ 的中位数。

样例 #1

样例输入 #1

7
1 3 5 7 9 11 6

样例输出 #1

1
3
5
6

样例 #2

样例输入 #2

7
3 1 5 9 8 7 6

样例输出 #2

3
3
5
6

提示

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

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

对于 100 % 100\% 100% 的数据, 1 ≤ N ≤ 100000 1 \le N ≤ 100000 1≤N≤100000, 0 ≤ A i ≤ 1 0 9 0 \le A_i \le 10^9 0≤Ai​≤109。

题解

分析

这道题我们用二分记录一下在第 i i i位时的顺序即可 , , ,因为 v e c t o r vector vector是从下标 0 0 0开始的,所以到第 i i i个数时,中位数下标 = ( i + 1 ) / 2 =(i+1)/2 =(i+1)/2
PS:上面大家可能看不懂,建议看代码

v e c t o r vector vector基本用法

v . p u s h _ b a c k ( ) v.push\_back() v.push_back()在 v e c t o r vector vector末尾插入一个数据

v . i n s e r t ( ) v.insert() v.insert()在 v e c t e r vecter vecter中插入一个元素

v . e r a s e ( ) v.erase() v.erase()在 v e c t o r vector vector中删除一个元素

Code

#include <bits/stdc++.h>

using namespace std;

vector<int> e;

int main()
{
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++)
    {
        int x;
        cin >> x;
        e.insert(upper_bound(e.begin(), e.end(), x), x); //保证单调性
        if (i % 2 == 1) //判断奇数
        {
            cout << e[(i - 1) / 2] << endl; //是奇数个,就输出
        }
    }
    return 0;
}

标签:le,洛谷,int,样例,中位数,vector,100,P1168,刷题
From: https://blog.csdn.net/resco/article/details/141974016

相关文章

  • 洛谷 P6419 [COCI2014-2015#1] Kamp
    洛谷P6419[COCI2014-2015#1]Kamp题意一颗树\(n\)个点,\(n-1\)条边,经过每条边都要花费一定的时间,任意两个点都是联通的。有\(K\)个人(分布在\(K\)个不同的点)要集中到一个点举行聚会。聚会结束后需要一辆车从举行聚会的这点出发,把这\(K\)个人分别送回去。请你回答,对......
  • 洛谷 P5658 [CSP-S2019] 括号树
    洛谷P5658[CSP-S2019]括号树题意给定一棵树,每个点有一个括号(或)。定义\(s_i\)表示根节点到\(i\)每个点的括号组成的序列。求每个\(s_i\)中合法括号子串的个数\(f_i\)。思路定义\(g_i\)表示\(s_i\)中以\(i\)结尾的合法括号子串的个数。有\(f_i=f_{fa_......
  • 力扣刷题--2643.一最多的行【简单】
    题目描述......
  • LeetCode刷题-栈
    一:栈1、栈的特性:栈和队列不一样;队列是先进先出;而队列是先进后出;后进后出!2、栈的常见操作defcreate_stack():stack=[]#在python中;通常用列表实现栈的操作returnstackdefpush(stack,data):stack.append(data)#将data压入栈中defpeek(stack):returnsta......
  • 洛谷题单指南-常见优化技巧-P3467 [POI2008] PLA-Postering
    原题链接:https://www.luogu.com.cn/problem/P3467题意解读:用长方形的海报覆盖建筑的侧面,最少需要的海报数如上图,左边最少需要3张,右边最少需要4张解题思路:可以看出,需要海报数与建筑宽度无关,只与高度有关。当建筑高度与之前不同时,肯定需要增加一张海报;当建筑高度与之前有相同......
  • LeetCode Hot100刷题记录-21. 合并两个有序链表
    题目描述:将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。需要知道的pre-knowledge:list1和list2起初可直接代表两个链表的头节点,无需用另外的变量比如current来表示头节点。思路:准备一个虚拟节点,指向合并完成新链表的h......
  • LeetCode Hot100刷题记录-206. 反转链表
    206.反转链表题目描述:给你单链表的头节点head,请你反转链表,并返回反转后的链表。这道题要用到两个指针,一个current指向当前节点,另一个prev指向当前节点的上一个节点。首先让current指向头节点head,prev指向head的前一个也就是null,这里要用next变量来暂时存储current的下一个......
  • leetcode刷题day9|字符串部分(151.翻转字符串里的单词、卡码网:55.右旋转字符串)
    前言:字符串章节的第二部分,复习第一部分的知识加提升。151.翻转字符串里的单词链接:https://leetcode.cn/problems/reverse-words-in-a-string/前言:不使用Java内部方法实现思路:先去除字符串中的空格;将整个字符串反转;将单词再一次反转。代码如下:classSolution{pub......
  • leetcode刷题day8|字符串部分(344.反转字符串、541. 反转字符串II)
    前言:字符串部分还是比较简单的344.反转字符串链接:https://leetcode.cn/problems/reverse-string/description/思路:这个比较简单,因为字符串也是数组类型的,用两个指针进行交换即可。代码如下:classSolution{publicvoidreverseString(char[]s){inti=0......
  • 【洛谷 P1449】后缀表达式 题解(栈+分支)
    后缀表达式题目描述所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优先级)。如:对应的后缀表达式为:。在该式中,@为表达式的结束符号。.为操作数的结束符号。输入格式输入一行......