P1168 中位數

題目描述

給定一個長度為?N?的非負整數序列?A,對于前奇數項求中位數。

輸入格式

第一行一個正整數?N。

第二行?N?個正整數?A1…N?。

輸出格式

共??2N+1???行,第?i?行為?A1…2i?1??的中位數。

輸入輸出樣例

輸入 #1復制

7
1 3 5 7 9 11 6

輸出 #1

1
3
5
6

輸入 #2復制

7
3 1 5 9 8 7 6

輸出 #2

3
3
5
6

樹狀數組 + 離散化 + 二分? ,時間復雜度O(n log n)

離散化:將原始數值映射到1~n的范圍內

樹狀數組:使用樹狀數組來維護每個離散化后的數值出現的次數

二分:在樹狀數組上二分查找第k小的數,利用樹狀數組的前綴和特性


#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<vector>
#include<queue>
#include<deque>
#include<stack>
#include<set>
#include<map>
#include<unordered_set>
#include<unordered_map>
#include<bitset>
#include<tuple>
#define inf 72340172838076673
#define int long long
#define endl '\n'
#define F first
#define S second
#define  mst(a,x) memset(a,x,sizeof (a))
using namespace std;
typedef pair<int, int> pii;const int N = 100086, mod = 998244353;int n, m;
int a[N],e[N];
vector<int> alls;int lowbit(int x) {return x & -x;
}void add(int i, int x) {for (; i <= n; i += lowbit(i)) e[i] += x;
}int sum(int i) {int res = 0;for (; i; i -= lowbit(i)) res += e[i];return res;
}int find(int k) {int l = 0, r = n;while (l + 1 < r) {int mid = l + r >> 1;if (sum(mid) < k) l = mid;else r = mid;}return r;
}void solve() {cin >> n;alls.push_back(0);for (int i = 1; i <= n; i++) {cin >> a[i];alls.push_back(a[i]);}sort(alls.begin(), alls.end());alls.erase(unique(alls.begin(), alls.end()), alls.end());for (int i = 1; i <= n; i++) {a[i] = lower_bound(alls.begin(), alls.end(), a[i]) - alls.begin();}for (int i = 1; i <= n; i++) {add(a[i], 1);if (i & 1) {cout << alls[find((i + 1)>>1)] << endl;}}}signed main() {ios::sync_with_stdio(false);cin.tie(nullptr), cout.tie(nullptr);int T = 1;
// cin >> T;while (T--) solve();return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/96692.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/96692.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/96692.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【CE】圖形化CE游戲教程通關手冊

【CE】圖形化CE游戲教程通關手冊 文章目錄【CE】圖形化CE游戲教程通關手冊導讀需求1?? 第一關提示操作總結2?? 第二關&#xff08;代碼共享&#xff09;提示操作驗證3?? 第三關提示提示總結導讀 需求 除了Tutorial-x86_64.exe教程外&#xff0c;CE還提供了圖形化教程gtu…

leetcode 2785. 將字符串中的元音字母排序 中等

給你一個下標從 0 開始的字符串 s &#xff0c;將 s 中的元素重新 排列 得到新的字符串 t &#xff0c;它滿足&#xff1a;所有輔音字母都在原來的位置上。更正式的&#xff0c;如果滿足 0 < i < s.length 的下標 i 處的 s[i] 是個輔音字母&#xff0c;那么 t[i] s[i] 。…

支付子系統架構及常見問題

支付流程對于支付系統來說&#xff0c;它最重要的其實是安全&#xff0c;所以整個支付流程采用秘鑰加簽的方式進行操作&#xff0c;一共四對秘鑰&#xff0c;以支付寶在線支付為例子&#xff0c;首先通過RSA2算法生成商戶公鑰以及商戶私鑰&#xff0c;同時支付寶平臺會提供支付…

內存傳輸速率MT/s

1 0 0 0 0 0 0 0 0 010 9 8 7 6 5 4 3 2 1十 億 千 百 十 萬 千 百 十 個億 萬 萬 萬傳輸速率 …

.env文件的作用和使用方法

目錄 什么是 .env 文件&#xff1f; 為什么要使用 .env 文件&#xff1f;&#xff08;好處&#xff09; 如何使用 .env 文件&#xff1f; 通用步驟&#xff1a; 具體技術棧中的實現&#xff1a; 最佳實踐和注意事項 總結 什么是 .env 文件&#xff1f; .env 文件&#x…

深度拆解 Python 裝飾器參數傳遞:從裝飾器生效到參數轉交的每一步

在 Python 裝飾器的學習中&#xff0c;“被裝飾函數的參數如何傳遞到裝飾器內層函數”是一個高頻疑問點。很多開發者能寫出裝飾器的基本結構&#xff0c;卻對參數傳遞的底層邏輯一知半解。本文將以一段具體代碼為例&#xff0c;把參數傳遞過程拆成“裝飾器生效→調用觸發→參數…

【Vue2 ?】Vue2 入門之旅 · 進階篇(七):Vue Router 原理解析

在前幾篇文章中&#xff0c;我們介紹了 Vue 的性能優化機制、組件緩存等內容。本篇將深入解析 Vue Router 的原理&#xff0c;了解 Vue 如何管理路由并進行導航。 目錄 Vue Router 的基本概念路由模式&#xff1a;hash 和 history路由匹配原理導航守衛Vue Router 的路由過渡動…

Linux磁盤級文件/文件系統理解

Linux磁盤級文件/文件系統理解 1. 磁盤的物理結構 磁盤的核心是一個利用磁性介質和機械運動進行數據讀寫的、非易失性的存儲設備。 1.1 盤片 盤片是傳統機械硬盤中最核心的部件&#xff0c;它是數據存儲的物理載體。盤片是一個堅硬的、表面極度光滑的圓形碟片&#xff0c;被安裝…

【星海出品】rabbitMQ - 叁 應用篇

rabbitMQ 的基礎知識這里就不闡述了,可以參看我早年寫的文章 -> rabbitMQ 入門 https://blog.csdn.net/weixin_41997073/article/details/118724779 Celery 官網:http://www.celeryproject.org/ Celery 官方文檔英文版:http://docs.celeryproject.org/en/latest/index.h…

C# 每個chartArea顯示最小值、平均值、最大值

private void AddStatisticsAnnotations(ChartArea chartArea, int channelIndex) {RemoveExistingAnnotations(channelIndex);// 獲取ChartArea的相對坐標&#xff08;百分比&#xff09;float chartAreaX chartArea.Position.X; // X坐標&#xff08;百分比&#xff09;floa…

打破“不可能三角”:WALL-OSS開源,具身智能迎來“安卓時刻”?

目錄 引言&#xff1a;當“大腦”學會思考&#xff0c;機器人才能走出實驗室 一、具身智能的“不可能三角”&#xff1a;機器人“大腦”的核心困境 二、WALL-OSS的四把重錘&#xff1a;如何系統性地破解難題&#xff1f; 2.1 第一錘&#xff1a;更聰明的“大腦”架構 —— …

SigNoz分布式追蹤新體驗:cpolar實現遠程微服務監控

前言 SigNoz是一款開源的應用性能監控工具&#xff0c;專為微服務架構設計&#xff0c;集成了指標、追蹤和日志分析功能。它能夠全面監控分布式系統的性能&#xff0c;幫助開發團隊快速定位問題根源。SigNoz支持OpenTelemetry協議&#xff0c;可以無縫集成各種編程語言和框架&…

python編程原子化多智能體綜合編程應用(下)

上述代碼實現了基于Mesa框架的診斷智能體類,包含以下核心功能: 模塊化設計:通過類屬性分離數據與行為,支持不同專科智能體的擴展 狀態管理:實現idle/processing/error等狀態轉換,支持任務調度 診斷推理:集成機器學習模型,支持癥狀提取與多分類診斷 錯誤處理:包含模型加…

QT M/V架構開發實戰:QSqlQueryModel/ QSqlTableModel/ QSqlRelationalTableModel介紹

目錄[TOC](目錄)前言一、初步介紹二、QSqlQueryModel1.基礎定位2.特點3.核心接口4.典型用法5.優缺點三、QSqlTableModel1.基礎定位2.特點3.核心接口4.典型用法5.優缺點四、QSqlRelationalTableModel1.基礎定位2.特點3.核心接口4.典型用法 (示例&#xff1a;employees表有 dept_…

Terraform 從入門到實戰:歷史、原理、功能與阿里云/Azure 上手指南

前言&#xff1a;在云時代&#xff0c;企業的IT基礎設施早已從“幾臺服務器”演變為“橫跨多云的復雜網絡、計算、存儲集群”。但隨之而來的&#xff0c;是管理復雜度的爆炸式增長&#xff1a;開發環境和生產環境不一致、手動配置容易出錯、多云平臺操作方式各異、資源變更難以…

【計算機網絡 | 第10篇】信道復用技術

文章目錄信道復用技術&#xff1a;高效利用通信資源的智慧方案一、頻分復用&#xff08;FDM&#xff09;&#xff1a;按頻率劃分的并行通道二、時分復用&#xff08;TDM&#xff09;&#xff1a;按時間分割的輪流占用三、統計時分復用&#xff08;STDM&#xff09;&#xff1a;…

安卓13_ROM修改定制化-----禁用 Android 導航按鍵的幾種操作

Android 設備的導航按鍵通常包括后退鍵(Back)、主頁鍵(Home)和最近鍵(Recents),這些按鍵位于屏幕底部或設備實體區域。禁用導航按鍵可以幫助在特定應用場景(如信息亭模式或兒童鎖模式)中限制用戶操作。安卓設備上禁用底部虛擬導航鍵(返回、主頁、多任務鍵)有多種方法…

通過S參數測量評估電感阻抗:第2部分

S21雙端口分流和雙端口串聯方法 T這是兩篇文章中的第二篇&#xff0c;專門討論使用網絡分析儀測量 S 參數進行電感阻抗評估主題。上一篇文章 [1] 描述了阻抗測量和計算S11使用單端口分流器、雙端口分流器和雙端口串聯方法的參數。本文專門介紹阻抗測量和計算S21使用雙端口分流…

[deepseek] C語言頭文件與匯編實現討論

我想詢問一種代碼實現方式&#xff0c;使用C語言&#xff0c;例如main.c包含了自己編寫的庫文件abc.h&#xff0c;我想問的是&#xff1a;一、abc.h中是否可以有實現函數的代碼&#xff1b;二、abc.h中的函數是否可以在另一個后綴為asm的匯編文件中實現&#xff1f;非常好&…

`.cursorrules` 與 `.cursorcontext`:Cursor AI 編程助手時代下的“雙軌配置”指南

.cursorrules 與 .cursorcontext&#xff1a;AI 編程助手時代下的“雙軌配置”指南關鍵詞&#xff1a;Cursor、AI 編程、上下文管理、開發規范、技術治理 適合讀者&#xff1a;前端 / 全棧工程師、技術負責人、AI 輔助編程實踐者1. 為什么又多了兩個“點”文件&#xff1f; 隨著…