資料結構綜合應用 堆

2021-10-14 03:55:39 字數 1214 閱讀 5022

學習:priority_queue 基礎型別預設是大根堆,全的寫法是priority_queue

洛谷:2827

題意過程描述:

(變數sig記錄經過時間增加的長度)

找到最值

切成兩半

插入新產生的兩個值

sig記錄增加的長度

80分**:

#include

using

namespace std;

priority_queue <

int> ans;

//大根堆

int n, m, q, u, v, t, sig;

double p;

int tot;

intmain()

for(

int i =

1; i <= m; i ++

) cout << endl;

for(

int i =1;

!ans.

empty()

; i ++

)return0;

}

換個思路:

(變數delt記錄經過時間增加的長度)

排序o(n*logn)

用三個堆,分別存放沒被切的蚯蚓,被切兩半的蚯蚓

每一秒,找到3個堆頂的最大值來切o(1)

計算切成兩半的長度o(1)

插入兩個新的值o(1)

100分**:

#include

using

namespace std;

const

int n =

2e7;

const

int m =

1e7;

int q1[n]

, q2[m]

, q3[m]

;int h1, h2, h3, t1 =

1, t2 =

1, t3 =1;

int n, m, q, u, v, t;

int delta;

intcmp

(int z,

int zz)

intmain()

}

cout

int i =

1; i <= n + m; i ++

)return0;

}

「高階演算法」專欄(目錄)

資料結構綜合應用 堆

動態維護中位數問題,可以用堆,樹狀陣列,線段樹等資料結構解決 堆,可以用來進行插入,查詢最值,刪除最值等操作 對頂堆 一大根堆和一小根堆,大根堆維護最小值,小根堆維護最大值。洛谷1168 題意 每輸入奇數個數字,實時輸出中位數 解題思路 定義乙個對頂堆,輸入第乙個數字,並作為中位數輸出,每輸入乙個數...

資料結構 堆的應用

public class heap 插入操作的 public void insert int value count a count value 插入後,從節點開始從下往上開始堆化,插入 自下往上堆化 int i count while i 2 0 a i a i 2 public int remo...

資料結構 堆及堆的應用

堆是一種特殊的樹形結構,堆的把每乙個節點都有乙個值,我們通常所說的堆這種資料結構,指的就是二叉堆。其實它可以被看做乙個完全二叉樹。它的每個節點的子樹又可以被看做是堆。堆可以分為最大堆和最小堆 最大堆 每個父節點都大於孩子節點 最小堆 每個父節點都小於孩子節點 a 我們在定義堆的資料成員的時候,利用s...