• <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://m.shnenglu.com/hoolee/archive/2012/08/06/186482.html
            代碼如下:

            posted @ 2012-08-07 11:23 小鼠標 閱讀(136) | 評論 (0)編輯 收藏
            最小生成樹,Prim算法。
            具體可參閱:http://m.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://m.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://m.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://m.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

            最新評論

            閱讀排行榜

            亚洲日韩欧美一区久久久久我 | 久久久久久久97| 欧美午夜精品久久久久免费视| 国产精品久久久久天天影视| 精品乱码久久久久久夜夜嗨| 无码八A片人妻少妇久久| 精品熟女少妇a∨免费久久| 精品久久久久久无码免费| 亚洲va久久久噜噜噜久久狠狠| 九九久久自然熟的香蕉图片| 色播久久人人爽人人爽人人片aV | 国产精品99久久久久久宅男| 亚洲va久久久噜噜噜久久狠狠 | yellow中文字幕久久网| 狠狠精品久久久无码中文字幕| 欧美亚洲另类久久综合| 亚洲精品无码久久一线| 无码乱码观看精品久久| 夜夜亚洲天天久久| 99久久成人国产精品免费| 久久精品久久久久观看99水蜜桃| 久久99精品久久久久久野外| 精品久久久久久亚洲| 久久久久亚洲AV成人片| 国内精品人妻无码久久久影院导航| 久久久久国产精品嫩草影院| 一本久久久久久久| 久久精品国产亚洲欧美| 久久精品国产只有精品2020| 99久久精品国产麻豆| 99精品久久精品| 久久精品国产91久久麻豆自制| 久久精品国产第一区二区三区| 亚洲va久久久噜噜噜久久男同| 午夜精品久久久久久影视777| 日本三级久久网| 99久久国产综合精品麻豆| 久久99国产综合精品免费| 77777亚洲午夜久久多喷| 亚洲国产精品人久久| 久久99国产精品久久99|