小根堆實現的堆排序

輸入:     第一行輸入一個整數N,代表要排序元素的個數           以下N行輸入N個要排序的元素輸出:    從小到大依次輸出各元素  #include<iostream>using namespace std ;int a[100] ;void heap(int s, int n){            //調整堆,使其始終為小根堆    int i, j = 1, k = a[s], max = 0 ;    while(j!=max){        i = a[

hdu 1251 首碼樹

題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=1251    普通trie樹,只是在構建的時候統計出每個節點兒子的個數,最後直接匹配每個首碼,輸出最後一個前置詞字元在樹中兒子的個數加一(其本身)即可。    糾結的是題目沒給資料範圍,tree數組開100010 RE,開200010

hdu 1253(bfs)

http://acm.hdu.edu.cn/showproblem.php?pid=1253   題目不難,簡單的BFS加一點剪枝,不過讓人鬱悶的是用G++提交一直CE,用C++一次AC。最後還是XSY發現的問題,將我儲存時間的變數time改成了T然後就A掉了...   這下是記住了,以後再也不用time這名了!  #include<cstdio>#include<queue>using namespace std ;int a, b, c, T;int map[51][

hdu 1242(bfs)

http://acm.hdu.edu.cn/showproblem.php?pid=1242讀完題第一個想法就是以每個friend的位置為起點依次bfs出step,取最小值。提交後WA,修改再提交TLE。這題是多對一的搜尋,反過來就是一對多,第一個搜到的friend所需的step即為最小值。改完後再提交依舊WA...看了下別人的解題報告,基本都是用的優先隊列,無奈看了下優先隊列的內容,發現也不是想象中那麼複雜。在struct中加上了自訂優先順序operator<稍微一改便AC了。猛然發現優

hdu 1010(dfs)

http://acm.hdu.edu.cn/showproblem.php?pid=1010做的非常噁心的一題,一個腦殘錯找了N久,剪枝後還是那麼慢... #include<iostream>#include<cstdio>using namespace std ;char str[10][10] ;int tur[4][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}} ;int e, n, m, t, di, dj ;int abs(int

數組實現隊列

數組、鏈表實現隊列、棧-->http://acm.sdut.edu.cn/BBS/read.php?tid=3461 粘一個看得懂,感覺比較實用的(其實別的都看不懂...)  1 #include<stdio.h> 2 #include<string.h> 3 int main() 4 { 5     int a[1000],i,top,end1,b[1000],end2; 6     int m,n; 7     char str[8]; 8     top=en

計算幾何題目整理)

計算幾何題的特點與做題要領:1.大部分不會很難,少部分題目思路很巧妙2.做計算幾何題目,模板很重要,模板必須高度可靠。3.要注意代碼的組織,因為計算幾何的題目很容易上兩百行代碼,裡面大部分是模板。如果代碼一片混亂,那麼會嚴重影響做題正確率。4.注意精度控制。5.能用整數的地方盡量用整數,要想到擴大資料的方法(擴大一倍,或擴大sqrt2)。因為整數不用考慮浮點誤差,而且運算比浮點快。一。點,線,面,形基本關係,點積叉積的理解POJ 2318

poj 1287(prim)

poj又很英勇的掛掉了,無奈。。再掛上幾次我就轉戰zoj! 今天刷了幾道最小產生樹, 都是用prim寫的 #include<cstdio>#include<cstring>#define amin(a,b) a<b?a:b#define MAX 99999999using namespace std ;int map[105][105] ;int i, j, k ;int prim(int n){    int dis[105] ;    int x = 1 ;  

poj 1953 Workd Cup Noise

DescriptionBackground "KO-RE-A, KO-RE-A" shout 54.000 happy football fans after their team has reached the semifinals of the FIFA World Cup in their home country. But although their excitement is real, the Korean people are still very organized by

hdu 1728(bfs)

http://acm.hdu.edu.cn/showproblem.php?pid=1728這題主要是解決一個多次訪問取最優(轉向次數最少)的問題,用vis數組記錄每次訪問的轉向次數,當出現跟優解時此點再次入隊。 #include<cstdio>#include<queue>#include<iostream>using namespace std ;int m, n, lim, si, sj, ei, ej ;int tur[5][2] = {0, 0, 0

任務調度 簡單貪心

題意:    有N個任務,每個任務都花費一個單位的時間來完成,每個任務都有規定的時間期限,超出期限完成則要罰款。求所能使罰款最小的工作群組合及最小罰款金額。   輸入:    一個整數N代表任務個數,下面N行分別有兩個整數,第一個為時間期限,第二個為逾時罰款金額。輸出:    期限內完成的任務編號,期限外完成任務編號,罰款數。    本題關鍵在罰款金額,所以要儘可能的使罰款金額大的任務先完成,對任務根據罰款金額從大到小排序,依次處理各個任務。得到可提前完成的任務後,對任務根據時間期限排序,使期限

採用貪心策略計算最優二叉樹

題目:         有n件重量不同的物品,現要求耗費最少的體力將它們合并成一堆。每一次合并可以把兩堆物品合并成一堆,消耗的體力等於兩堆物品的重量之和。輸入: 第一行輸入物品個數n,以下n行依次輸入各物品重量。輸出: 輸出耗費的最小體力。   用堆排序每次將兩個權值最小的結點取出,從結點集中刪除並將合并後的結點加入節點集合,合并後的結點權值為這兩個被刪除結點的權值之和,累加新結點的權值。重複計算直到只剩隨後一個結點為止,最後所累加的權值和即為所求解。 #include<iostream&

poj 3628(01_page, dfs)

http://poj.org/problem?id=3628讀完題感覺就是一01背包,仔細想想確又沒什麼好的思路,感覺只能暴力水水... 看了下discuss裡討論的,寫了第一個代碼#include<cstdio>#include<cstring>using namespace std ;int heg[21] ;bool f[20000001] ;int main(){    int n, h, i, j ;    while(~scanf("%d%d", &n

poj 1837 Balance

題目連結:http://poj.org/problem?id=1837     用DP求解,相當與01背包。起初依然是沒有想到具體的思路,看了下解題報告後發現與01背包如此接近。        從此題開始進入DP模式...  #include<iostream>#include<cstdio>#include<cstring>using namespace std ;int dp[20][15010], C[25], G[25] ;int main(){   

乘船問題 簡單貪心

題意:    給定船的最大載重量和旅客人數,以及每個旅客的體重,每條船最多坐兩人,求讓每個旅客都上船所需船數量的最小值。    由於旅客體重範圍較小,可直接遍曆所有可能的體重,省去了對旅客體重值的排序。用一個數組記錄每個體重旅客的人數,根據較輕體重的旅客與較重體重旅客的最佳搭配得到最優解。代碼:#include<iostream>#include<cstring>using namespace std ;int main(){    int a[300] ;   

hdu 1072(bfs)

http://acm.hdu.edu.cn/showproblem.php?pid=1072一開始看著題目太長,不想讀了,就問了下XSY題意。可惜交流了半天也沒弄清楚具體細節問題...無奈又回過去重新讀了遍題。看來讀題還是得自己做啊...  做的BFS題不多,隊列的性質還沒用熟練。#include<cstdio>#include<queue>#include<cstring>using namespace std ;int tur[4][2] = {{1, 0

hdu 2141(二分)

題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=2141 #include<iostream>#include<algorithm>#include<cstdio>using namespace std;int a[505], b[505], c[505], s[1005], ans[250005] ;int main(){    int l, n, m, x, mid, low, high, i, j, t=1 

KMP演算法(AC自動機前奏)

        我們這裡說的KMP不是拿來放電影的(雖然我很喜歡這個軟體),而是一種演算法。KMP演算法是拿來處理字串匹配的。換句話說,給你兩個字串,你需要回答,B串是否是A串的子串(A串是否包含B串)。比如,字串A="I'm matrix67",字串B="matrix",我們就說B是A的子串。你可以委婉地問你的MM:“假如你要向你喜歡的人表白的話,我的名字是你的告白語中的子串嗎?”      

hdu 1372 & poj 2243(bfs)

http://acm.hdu.edu.cn/showproblem.php?pid=1372http://poj.org/problem?id=2243 擦了個擦的,N久前在杭電上做的這題0ms,到poj上一交直接逾時!poj根本不讓用stl啊。。 沒辦法,只能類比隊列又亂敲了遍。code1: #include<cstdio>#include<queue>using namespace std ;char bstr[3], estr[3] ;int b[2], e[2] 

堆排序詳解

1、 堆排序定義     n個關鍵字序列Kl,K2,…,Kn稱為堆,若且唯若該序列滿足如下性質(簡稱為堆性質):     (1) ki≤K2i且ki≤K2i+1 或(2)Ki≥K2i且ki≥K2i+1(1≤i≤n  )     若將此序列所儲存的向量R[1..n]看做是一棵完全二叉樹的儲存結構,則堆實質上是滿足如下性質的完全二叉樹:樹中任一非葉結點的關鍵字均不大於(或不小於)其左右孩子(若存在)結點的關鍵字。2、大根堆和小根堆    

總頁數: 61357 1 .... 9739 9740 9741 9742 9743 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.