poj2051 優先佇列 自實現版本和STL版本

2021-06-21 01:03:21 字數 1477 閱讀 6687

/**

* poj2051 優先佇列_最小堆的自實現與stl的priority_queue

* 最小堆的實現:

* 插入操作:進來乙個值放在隊尾,然後從下往上比較,直到滿足堆的要求

* 刪除操作:將堆頂和堆底的乙個值互換,然後從上往下比較,直到滿足堆的要求(因為之前,堆的左右子樹都是堆),最後去掉新對底的值

*/#include #include using namespace std;

const int max_num = 1001;

struct reg

bool operator<=(reg a)const

bool operator>(reg a)const

bool operator>=(reg a)const

};struct cmp

};char s[10] = ;

/*//先自己來乙個最小堆!

template class minheap

t getmin()

void setmin(const t &x) ;

bool is_empty()

void clear()

t *heap;

private:

int current_size;

int max_size;

void filter_down(const int start,const int end);

void filter_up(int start);

};template minheap::minheap(int n)

template minheap::~minheap()

template void minheap::filter_up(const int start)

else

}heap[i] = temp;

}template void minheap::filter_down(const int start,const int end)

if(temp <= heap[j])

else

}heap[i] = temp;

}template bool minheap::insert(const t &x)

else

}template void minheap::setmin(const t &x)

int main()

else

getchar();//\n?

}scanf("%d",×);

for(int i=0;i,cmp> q;

int times;

struct reg rtmp;

while(scanf("%s",s))

else

getchar();//\n?

}scanf("%d",×);

for(int i=0;ireturn 0;

}

POJ 2051 Argus(優先佇列)

題目 題目大意 這道題就是個最小堆,把最先到達的query輸出query編號,然後繼續排隊等待同樣的時間,要是某幾個請求同時到達的話,就要按照編號從小到大的輸出。思路 先定義乙個結構體,裡面包含 query的 id 和 time,然後將query放進優先佇列裡,變可以 輕鬆解決問題。ac 1 inc...

堆和優先佇列的實現

minheap.h inte ce for the minheap class.if defined afx minheap h 6bc12e9a b926 47c2 8acf aa4004a0546f included define afx minheap h 6bc12e9a b926 47c2...

poj 3253 哈夫曼思想 優先佇列實現

這兩天都沒怎麼寫 因為數學拉的太多了。期中考來了。今天看了一篇文章,又想起這題,就跑來看看,發現之前居然並沒有寫題解。思路,每個木板的開銷應該是木板的長度乘以節點的深度。那麼就是最短的板應該是深度最大的節點之一,每次將最短的和次短的合併起來就是當前最小的開銷,一直加起來直到所有木板最後合併成乙個木板...