yzoi2223集合構造的詳細解法

2022-05-18 11:55:55 字數 793 閱讀 6093

集合m的定義如下:

那麼,集合m中,最小的n個數是哪些?

乙個整數n(1<=n<=100 000)

n個從小到大的整數,空格分隔。

仔細一分析便可推知最後需要輸出的數一定是單調遞增的。在當時做這題的時候,旁邊的gxy同學直接從1開始暴力列舉所有的奇數(2x+1和4x+5肯定是乙個奇數),然後判斷和前面的數是否構成2x+1或4x+5的關係,是的話就輸出,否則便continue,這樣的話演算法複雜度就達到了o(n^2),最後還是有乙個點無法通過。那麼,是否還有更好的方法呢?

不妨用乙個問題來說明單調佇列的作用和操作:

不斷地向快取陣列裡讀入元素,也不時地去掉最老的元素,不定期的詢問當前快取陣列裡的最小的元素。

最直接的方法:普通佇列實現快取陣列。

進隊出隊都是o(1),一次查詢需要遍歷當前佇列的所有元素,故o(n)。

好了,接下來給出**,僅供參考:

1 #include2

using

namespace

std;

3const

int maxn=1000000+10;4

inta[maxn],b[maxn];

5int x=1,n,total=1;6

int front1=1,front2=1,tail1=0,tail2=0;7

intmain()829

else

3036

else

3742

}43 total++;44}

45return0;

46 }

Java基礎 集合2 集合的迭代

2.迭代集合 list for迴圈 從0開始迴圈到length 1,通過索引獲取元素 增強for迴圈 for 型別 變數名 集合 iterator 通過interator 獲取迭代器,呼叫hasnext 和next 來迭代 迭代器 enumeration 只適用於vector,elements 獲取...

9409 集合的劃分問題

time limit 3 second memory limit 2 mb 問題描述 n 個元素的集合可以劃分為若干個非空子集。例如,當n 4 時,集合可以劃分為15 個不同的非空子集如下 其中,集合 由1 個子集組成 集合,由2 個子集組成 集合,由3 個子集組成 集合,由4 個子集組成。程式設計...

020 集合的運算 py

coding utf 8 time 2020 8 2 17 21 author huxuehao file 020 集合的運算.py software pycharm theme 集合的運算 s1 s2 集合的交集運算 相交運算 print s1 s2 集合的並集運算 print s1 s2 集合的...