學習: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...