1. 程式人生 > >洛谷P1801 黑匣子_NOI導刊2010提高(06)

洛谷P1801 黑匣子_NOI導刊2010提高(06)

https://www.luogu.org/problemnew/show/1801
這道題目顯然就用打2個堆去維護一下就好了;
這裡有fb大佬給出一種更簡單的方法
mulitset
我們知道set裡面是遊有序的,所以我們插入一個數的時候,我們看看當前的第k小比這個數大還是小?
小的話沒關係,不影響,大的話那麼吧我們的迭代器指標前移

#include<bits/stdc++.h>
using namespace std;
const int N=200005;
multiset<int>q;
int a[N],s[N];
int n,m;
int main()
{
    cin
>>n>>m; for(int i=1;i<=n;i++)cin>>a[i]; for(int i=1;i<=m;i++)cin>>s[i]; int k=1;q.insert(a[1]); multiset<int>::iterator it=q.begin(); if(s[k]==1)printf("%d\n",a[1]),k++; for(int i=2;i<=n;i++){ q.insert(a[i]);if(a[i]<*it)it--; while
(s[k]==i){if(k!=1)it++;printf("%d\n",*it),k++;} } return 0; }

相關推薦

P1801 黑匣子_NOI2010提高06

https://www.luogu.org/problemnew/show/1801 這道題目顯然就用打2個堆去維護一下就好了; 這裡有fb大佬給出一種更簡單的方法 mulitset 我們知道s

Luogu P1801 黑匣子_NOI2010提高06

data 數據 整數 復制 names max radius http 用兩個 P1801 黑匣子_NOI導刊2010提高(06) 題目描述 Black Box是一種原始的數據庫。它可以儲存一個整數數組,還有一個特別的變量i。最開始的時候Black Box是空的.而i等於0

[LUOGU] P1801 黑匣子_NOI2010提高06

Black Box是一種原始的資料庫。它可以儲存一個整數陣列,還有一個特別的變數i。最開始的時候Black Box是空的.而i等於0。這個Black Box要處理一串命令。 命令只有兩種: ADD(

P1801黑匣子_NOI2010提高06

push 例如 while str logs return 處理 ges 用兩個 題目描述 Black Box是一種原始的數據庫。它可以儲存一個整數數組,還有一個特別的變量i。最開始的時候Black Box是空的.而i等於0。這個Black Box要處理一串命令。 命令只有

||NOI|堆|黑匣子_NOI2010提高06

http://www.luogu.org/problem/show?pid=1801 開兩個堆,一個大根堆維護1~i-1小元素,一個小根堆維護i~n小元素 新增元素時,如果元素小於大根堆堆頂,那麼把大

題解 P1801黑匣子_NOI2010提高06

amp 平衡樹 clu 實現 cto ctype 一位 mark 排序 我看正解已經有一大堆了,我就發個不太正經的吧 最近不會高級數據結構的蒟蒻在搞STL,搞完普通平衡樹後就看到了這道題,本來想用黑科技pb_ds中的紅黑樹做的,發現已經有大佬貼了一篇。set的做法也有人發

P1777 幫助_NOI2010提高03 解題報告

ems 混亂 取出 ring ++ 數據 inline 決定 memset P1777 幫助_NOI導刊2010提高(03) 題目描述 Bubu的書架亂成一團了!幫他一下吧! 他的書架上一共有n本書。我們定義混亂值是連續相同高度書本的段數。例如,如果書的高度是30,30,3

區間第k大黑匣子_NOI2010提高06

https://www.luogu.org/problemnew/show/P1801 可以用multiset水過,發現有超多資料結構可以處理這道題。== 線段樹:https://blog.csdn.net/weishengmingerfendou/article/details/47144

黑匣子_NOI2010提高06 Splay Tree

題目描述 Black Box是一種原始的資料庫。它可以儲存一個整數陣列,還有一個特別的變數i。最開始的時候Black Box是空的.而i等於0。這個Black Box要處理一串命令。 命令只有兩種: ADD(x):把x元素放進BlackBox; GET:i加1,然後輸出Blackhox中

LUOGUP1801 黑匣子_NOI2010提高06

一道堆排。主要思路就是建兩個堆,一個大根堆,一個小根堆,大根堆存1-i的,小根堆存i+1-u[i]的。然後如果大根堆的堆頂小於了小根堆的堆頂說明大根堆不是1-i的了,就需要維護這兩個堆,交換他們的堆頂。

堆/平衡樹——Luogu1801 黑匣子_NOI2010提高06

https://www.luogu.org/problem/show?pid=1801 那個,這個標題一開始我以為是飛機上的黑匣子。。。 進入正題,輸出第k小 我們來腦洞大開一下,因為k是遞增

刷題記錄-luoguP1801 黑匣子_NOI2010提高06

本題主要就是找第k小的數 可以建一棵二叉搜尋樹,設節點左子樹的個數為size,則有: 如果k==size+1,那麼顯然這個節點就是第k小的數 如果k<size+1,那麼k肯定在左子樹中,且為左子樹中第k小的數 如果k>size+1,那麼k肯定在右子樹中,且為右子

P1765 手機_NOI2010普及10 題解

names 超過 換行符 指定 size main 輸入輸出格式 必須 位置 此文為博主原創題解,轉載時請通知博主,並把原文鏈接放在正文醒目位置。 題目鏈接:https://www.luogu.org/problem/show?pid=1765 題目描述 一般的手

P1951 收費站_NOI2009提高2 最短路+二分

目錄 題面 題目連結 題目描述 輸入輸出樣例 輸入樣例: 輸出樣例: 說明 思路 AC程式碼 總結 題面 題目連結 其實還有一道雙倍經驗 題目描述 在某個遙遠的國家裡,有n個城市。編號為1,2,3,…,n。 這個國家的政府修建了m條雙向的公路。每條公路連線著兩個城市。沿著某條公路,開車從一個

luogu p1799 數列_NOI2010提高06

tps else return include .org 沒有 個數 ble 提高 原題鏈接 https://www.luogu.org/problem/show?pid=1799 我一開始覺得這個題真是玄學,直到我發現自己沒有寫max之後。。。(逃) f[i][j]表

主席樹P1801 黑匣子_NOI2010提高

https://www.luogu.org/problemnew/show/P1801 題目可以用主席樹直接求解,ai <= 2000000000,需要離散化。 #include<bits/stdc++.h> using namespace std; const int

P1807 最長路_NOI2010提高07 最長路

pro ace prior show str back con 去掉 esp 傳送門 把邊的權值改為負的,然後跑一遍最短路,對得到的結果取負就行了。忽然意識到邊的權值變為負的之後就不能用dijkstra了,因該用spfa,不過把dijkstra裏判斷是否進入過堆的語句去掉也

P1800 software_NOI2010提高06

協同 range right ace pac 所有 cst 同時 一個人 P1800 software_NOI導刊2010提高(06) 題目描述 一個軟件開發公司同時要開發兩個軟件,並且要同時交付給用戶,現在公司為了盡快完成這一任務,將每

P1800 software_NOI2010提高06

題目連結 題解 二分答案+dp 如果我們知道答案,貪心地想,讓每個人做盡量多的模組一定不會比最優解差 \(f[i][j]\)表示前\(i\)個人第一個模組做了\(j\)塊,第二個模組最多能做多少 然後我們列舉第\(i\)個人做多少塊第一個模組,就可以算出第二個模組最多能做多少 取最大值即可 Co

P1807 最長路_NOI2010提高07

接下來 for pac ext 輸入輸出 etc while out string 洛谷——P1807 最長路_NOI導刊2010提高(07) 題目描述 設G為有n個頂點的有向無環圖,G中各頂點的編號為1到n,且當為G中的一條邊時有i <