• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
                 摘要: 數(shù)組初始化的時候常用for()循環(huán),不過如果考慮效率的話,最好用memset(),下面簡單介紹以下memset()。
            函數(shù)原型:
            void *memset(void *s, int ch, size_t n)
            函數(shù)解釋:將s中前n個字節(jié)替換為ch并返回s;
            ……
            sizeof是C/C++中的一個操作符(operator),而不是函數(shù)……  閱讀全文
            posted @ 2012-08-07 23:38 小鼠標 閱讀(3202) | 評論 (2)編輯 收藏
            最小生成樹,Prim算法。
            具體可參閱:http://www.shnenglu.com/hoolee/archive/2012/08/06/186482.html
            代碼如下:

            posted @ 2012-08-07 11:23 小鼠標 閱讀(136) | 評論 (0)編輯 收藏
            最小生成樹,Prim算法。
            具體可參閱:http://www.shnenglu.com/hoolee/archive/2012/08/06/186482.html
            代碼如下:

            posted @ 2012-08-07 10:47 小鼠標 閱讀(129) | 評論 (0)編輯 收藏
            最小生成樹有兩個經(jīng)典算法:Prim算法和Kruskal算法,Prim適合于點較少的圖,對于一個節(jié)點數(shù)為N的連通圖來說,其時間復雜度為O(N^2);Kruskal適合于邊較少的圖,對一個邊為E的連通圖來說,其時間復雜度為O(ElogE),因此要根據(jù)不同情況選擇合適的算法。
            這里說一下Prim算法。
            Prim的具體步驟為把所有點分為兩個部分:屬于集合S,或不屬于S,當所有點都屬于S時,算法結(jié)束。
            1.初始條件先將第一個點p0劃到S中,然后利用p0關聯(lián)的所有邊更新cost[](sost[i]表示pi與S中點相連的最短的那條邊長)
            2.每次從sost[]中選出最小的那一個cost[i](i不能屬于S),將i加入到S中,并利用與i相關的邊更新cost[](已加入到S中的點不用再更新)
            3.反復執(zhí)行第二步,直到圖連通。(我們知道一個有n個節(jié)點的圖,最少只需要n-1條邊就可以連通了,所以第二步會執(zhí)行n-1次,每次都會在圖中加入一條邊)
            關于Kruskal請參閱:http://www.shnenglu.com/hoolee/archive/2012/08/04/186253.html
            下面是zoj1203的Prim算法代碼:

            posted @ 2012-08-06 17:46 小鼠標 閱讀(3146) | 評論 (0)編輯 收藏
            這是實驗室集訓開始第一次比賽的D題。
            題意描述:給你n張卡片,每張卡片正反面都有顏色(兩面的顏色可能相同,或不同),將這些卡片放在桌面上,每次操作你可以將一張卡片翻面。問的是能否通過最少的翻面次數(shù)使得正面有一種顏色的數(shù)量>=卡片數(shù)的一半,并輸出翻面次數(shù)。
            解題的大致思路是,用A[]統(tǒng)計出所有可能出現(xiàn)的顏色以及該種顏色出現(xiàn)的總次數(shù),用B[]統(tǒng)計正面的顏色以及該種顏色出現(xiàn)的次數(shù)。如果A[]中有某種顏色出現(xiàn)的次數(shù)>=(n+1)/2,說明通過若干次翻面操作我們是可以達到目的的,這時只需再參照B[],即可算出翻面次數(shù)。
            思路很清晰,可是有一些不得不注意的細節(jié)。
            1.當卡片兩面的顏色相同時,只能統(tǒng)計一次。
            2.數(shù)據(jù)量很大,查找時要用二分。
            3.如果一種顏色在只在反面出現(xiàn),B[]中是找不到它的。

            以下是本題代碼:
            posted @ 2012-08-06 15:16 小鼠標 閱讀(368) | 評論 (0)編輯 收藏
            這里不再贅述了,關于最小生成樹Kruskal算法可以參閱:http://www.shnenglu.com/hoolee/archive/2012/08/04/186253.html
            以下是本題代碼:
            posted @ 2012-08-04 16:40 小鼠標 閱讀(142) | 評論 (0)編輯 收藏
            這兩天在做最小生成樹,用的一直是Kruskal,不知道用Prim能把代碼寫的短點兒。。。
            這是有些被催的一題,題中兩個衛(wèi)星連接的點之間可以理解為沒有長度,偶錯誤的將衛(wèi)星個數(shù)S理解為沒有長度的邊的個數(shù),忘記了它們之間是有1之差的。O_O
            關于Kruskal,可以先參閱:http://www.shnenglu.com/hoolee/archive/2012/08/04/186253.html
            以下是本題代碼:
            posted @ 2012-08-04 16:21 小鼠標 閱讀(299) | 評論 (0)編輯 收藏
            最小生成樹有兩種算法:Prim和Kruskal,這里說一下Kruskal算法。
            其具體算法描述為(我們假設給定的圖是連通的):
            1.初始化總花費allcost=0
            2.將所有邊按邊長len從小到大的順序排序
            3.從頭到尾依次遍歷個邊edge[i], 如果該邊關聯(lián)的兩個定點不屬于同一個集合,則將這兩個集合合并,并更新allcost。
            Kruskal算法牽涉到集合操作,包括集合的建立和集合的合并,這里用并查集解決,下面簡單介紹以下并查集。
            并查集用森林來表示,他有以下操作:
            初始化:把每個節(jié)點所在結(jié)合初始化為自身。
            查找:查找元素所在的集合,即根節(jié)點
            合并:將兩個在不同集合的元素合并為一個集合,為了保持數(shù)的深度的平衡性,在合并之前,應判斷兩個集合樹的深度,如果深度不同,應將深度小的合并到深度大的上面。
            關于維持集合樹深度的問題,還有另一種做法,就是合并集合的時候并不考慮樹的深度,而是在查詢的時候改變樹的深度。因為沒有寫過,這里不多說了。
            下面是poj1258的代碼,最直接的最小生成樹。
            posted @ 2012-08-04 14:24 小鼠標 閱讀(1627) | 評論 (0)編輯 收藏
            大數(shù)問題。C語言中沒有大整數(shù)類型,當一個數(shù)超過long long時我們就沒辦法直接表示,只能通過數(shù)組模擬(字符數(shù)組,或者整形數(shù)組),與Java相比,這一點真是夠折磨人的,記得今年省賽的時候,有一題是關于大數(shù)的,有人直接用Java中的BigInteger類,很輕松的就搞定了,C語言真是無法望其項背。這里我們用C解一道大數(shù)乘法題,其實模擬大數(shù)運算就是在模擬小學生算算術,這一題只牽涉到了加法和乘法,我就說著兩種操作。
            加法Add():
            1.對位,將權(quán)值相同的各位對其
            2.相加,將相應的每一位相加
            3.進位,從低位到高位依次進位
            乘法:a*b
            乘法是在加法的基礎上完成的,跟我們手算乘法的過程一樣,依次將b的每一位與a相乘,加到一起就行了。需要注意的是b中的每一位權(quán)值是不一樣的。
            為了對位方便,我們通常是將數(shù)字倒置過來,即低位在左邊,高位在右邊。字符串處理都是些細節(jié),不小心就會犯錯誤。
            以下是poj3167的代碼:
            題意:給兩個數(shù)K、M,求n,使得M^n的第K為是數(shù)字7。
            posted @ 2012-08-04 09:31 小鼠標 閱讀(1186) | 評論 (0)編輯 收藏
            最直接的廣度優(yōu)先搜索題。求最短路一般用廣搜,廣搜要用到隊列;與廣搜對應的是深搜,深搜要用到棧,它能找到所有路,這里不展開說了。剛?cè)腴T的同學可以先看看隊列這種數(shù)據(jù)結(jié)構(gòu)。
            無論廣搜還是深搜,走過的節(jié)點一定要標記,以免多次走過同一個節(jié)點。
            以下是本題代碼:
            posted @ 2012-08-02 19:51 小鼠標 閱讀(223) | 評論 (0)編輯 收藏
            僅列出標題
            共13頁: First 4 5 6 7 8 9 10 11 12 Last 
            <2025年8月>
            272829303112
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            常用鏈接

            隨筆分類(111)

            隨筆檔案(127)

            friends

            最新評論

            閱讀排行榜

            久久久亚洲AV波多野结衣| AV色综合久久天堂AV色综合在| 99久久伊人精品综合观看| 99久久免费只有精品国产| 日韩中文久久| 69国产成人综合久久精品| 久久久久香蕉视频| 久久精品中文字幕无码绿巨人| 国产精品免费看久久久香蕉| 97精品国产97久久久久久免费| 国产精品久久久久…| 伊人色综合久久天天人手人婷| 麻豆精品久久久一区二区| 久久国产劲爆AV内射—百度| 97久久精品人人做人人爽| 午夜人妻久久久久久久久| 久久久久久国产a免费观看不卡| 久久狠狠爱亚洲综合影院| 久久亚洲精品无码观看不卡| 国产综合久久久久| 亚洲精品乱码久久久久久自慰| 久久久久久亚洲精品无码| 日韩精品国产自在久久现线拍| 一本一本久久aa综合精品| 午夜视频久久久久一区| 精品国产一区二区三区久久蜜臀| 久久国产亚洲高清观看| 久久青青草原精品国产| 色综合久久久久无码专区| 亚洲va中文字幕无码久久不卡| 久久亚洲中文字幕精品一区| 久久九九兔免费精品6| 久久国产精品久久| 国产欧美一区二区久久| 久久国产精品一区二区| 久久亚洲欧美日本精品| 国产一级做a爰片久久毛片| 国产精品天天影视久久综合网| 99久久精品费精品国产一区二区 | 狠狠狠色丁香婷婷综合久久俺| 亚洲中文字幕久久精品无码喷水 |