poj 2833 堆的應用(去若干最大值最小值)

2021-06-22 16:23:44 字數 548 閱讀 6269

題意:給定一些正數,去掉給定個數的最大值和給定個數的最小值,輸出其餘數字的平均數。

思路:建立乙個大頂堆,乙個小頂堆。大頂堆的大小為去掉的最小值個數,存放當前的若干最小值。遍歷資料的同時維護這兩個堆,最後堆中的資料即為需要去掉的資料。

輸入:1 2 5

1 2 3 4 5

4 2 10

2121187 902 485 531 843 582 652 926 220 155

0 0 0

輸出:3.500000

562.500000

#include #include #define n 15

int n1,n2,n;

int heap1[n],heap2[n];

void update1(int i)

heap1[i/2] = x;

}void update2(int i)

heap2[i/2] = x;

}int main()

else if(j>heap1[1])

if(i<=n2)

else if(j

POJ2833優先佇列

見題號吧 就是說有n個評分,裁判系統需要減去n1個最高分和n2個最低分,然後求出平均分.n1 n2 由於題給的記憶體大小為10000kb,而乙個5,000,000的陣列需要4 5000000 b 20000kb 會超出記憶體限制於是,不能存5000000陣列 我們想到用2個優先佇列模擬n1個最大值,...

POJ 2442 Sequence 堆的應用

poj 2442 給出m行n列,每行選乙個數組成乙個和,有nm 個結果,問前n小的和是哪些.超記憶體 一開始想的思路是以乙個和作為元素用優先佇列,感覺思路還是比較巧妙,有點類似於dijkstra。先把每一行排序,每行的第乙個元素組成的和一定是最小的,通過改變最小的和中某個數 將它右移一位 可以得到n...

堆以及堆的相關應用

本文中的堆是一種樹形資料結構,可以把堆看成一種特殊的完全二叉樹,再從二叉樹上加上一些限制條件即可以構成堆。即要求父節點元素全部都大於或等於子節點元素,或者小於等於。這就構成了倆種堆 堆的常見應用為 使用堆進行排序,也就是常說的堆排序,時間複雜度為nlgn 這是比較排序時間複雜度的下限,即使用比較的排...