qzezoj 1585 佇列重構

2022-05-11 13:43:02 字數 530 閱讀 1470

題面傳送門

對於這道題,正著列舉是很難列舉的,但我們可以反著來。

俗話說得好,正難則反。

考慮最小的乙個數\(h_i\),則所有數都是大於等於它的,所以它的排位應該是在\(v_i\)。

考慮第二小的數\(h_j\),則除了\(h_i\)沒有其他數小於它,所以我們可以直接找到除了\(v_i\)外的第\(i\)位,它的答案就是在那裡。

以此類推。

所以我們可以將所有二元組按\(h_i\)排序。然後用乙個迴圈查詢與刪除。

注意此處使用鍊錶和使用線性表是一樣的,因為鍊錶不能\(o(1)\)訪問任意元素,仍舊要迴圈列舉去找。

時間複雜度\(o(n^2)\)

**實現:

#include#includeusing namespace std;

struct yyyf[100039];

inline bool cmp(yyy x,yyy y){

return x.x此題可以達到時間複雜度\(o(nlog^2n^2)\),空間複雜度\(o(n)\),此處暫不詳細展開。

qzezoj 1585 佇列重構

題面傳送門 對於這道題,正著列舉是很難列舉的,但我們可以反著來。俗話說得好,正難則反。考慮最小的乙個數h ih i hi 則所有數都是大於等於它的,所以它的排位應該是在v iv i vi 考慮第二小的數h jh j hj 則除了h ih i hi 沒有其他數小於它,所以我們可以直接找到除了v iv ...

03 佇列操作

時間限制 100ms 記憶體限制 100kb 描述假設以帶頭節點的迴圈鍊錶表示佇列,並且只設乙個指標指向隊尾元素節點 不設頭指標 節點元素這裡設為整型,編寫佇列的初始化 入隊和出隊演算法。其中入隊元素個數n及其節點資料,和出隊元素個數m都是從鍵盤輸入 預設n m都不小於0 然後輸出出隊元素,出隊不合...

演算法(9)佇列

佇列是一種先進先出 first in first out 的資料結構,重要的元素有 頭,尾,佇列長度。佇列的操作基本有四種,驗空 isempty 驗滿 isfull 出隊 dequeue 入隊 enqueue 實現佇列有兩種方法,陣列和鍊錶。這裡陣列的程式是我自己寫的,鍊錶的則是參考 c prime...