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