字典樹學習

又稱單詞尋找樹,Trie樹,是一種樹形結構,是一種雜湊樹的變種。典型應用是用於統計,排序和儲存大量的字串(但不僅限於字串),所以經常被搜尋引擎系統用於文本詞頻統計。它的優點是:利用字串的公用首碼來節約儲存空間,最大限度地減少無謂的字串比較,查詢效率比雜湊表高。     字典樹與字典很相似,當你要查一個單詞是不是在字典樹中,首先看單詞的第一個字母是不是在字典的第一層,如果不在,說明字典樹裡沒有該單詞,如果在就在該字母的孩子節點裡找是不是有單詞的第二個字母,沒有說明沒有該單詞,有的話用同樣的方法繼續

[解題報告]POJ_2503 字典樹,MAP

題目很容易理解,就是每個字串對應一個foreign字串,然後給出foreign字串,進行翻譯因為一開始沒有學過字典樹,很自然的就想到MAP了,水過之後,看了一下discuss,發現這一題的做法很多,可以用二分+尋找,字典樹,HASH等等,因為以前沒有學習過字典樹,就學習並試著寫了一下,一次AC了..心情大好..關於字典樹的學習文章我發在前一篇了,是轉載的~ 字典樹寫法:#include <iostream>#include <cstdio>#include

進程的並發

正在學習OS課程,嘗試了一些系統進程管理的實驗,剛開始對進程的並發用實驗驗證時總是與書本上的結果不同,一般在書上,10幾句迴圈就可以看出進程的並發執行,可是我怎麼實驗也得不到那樣的結果,仔細看看才發現,在書本上的程式中都使用了sleep函數。但是,如果從原理上來講,不用sleep只要迴圈執行就應該可以看到進程的迴圈執行的,最後還是聽了老師的意見,加大迴圈次數,當我將迴圈次數加到10000時,果然看到預想的結果了。程式碼如下: #include <stdio.h>int main().

並查集學習

並查集可以理解為合并-尋找-集合.是一種用於快速尋找的資料結構,主要運用在不相交集合的快速尋找上.主要操作主要有三種:make_set(int n);//初始化find_set(int x);//尋找集合union_set(int x,int

[解題報告]POJ1042 Gone Fishing

這題我是用枚舉+貪心做的.對於大牛應該是一道簡單的貪心題..但我還是做了很久才做出來...這題的關鍵在於忽略路上的時間,先枚舉要到達的編號最大的湖泊..假設走到的編號最大的湖是X,實際上這條路只用走一遍,剩下的時間都用來釣魚.假設此時人可以瞬移,即可以瞬間選擇1-X中的一個湖進行釣魚.每次選擇魚最多的湖進行釣魚,直到沒有時間或者魚全部被釣完為止. import java.util.Arrays;import java.util.Scanner;public class GoneFish

POJ 1062 昂貴的聘禮 Dijkstra

  好不容易看到大段的中文啊..這不是愛情買賣..是婚姻買賣啊...一開始困惑怎麼解決等級交換問題,後來看了大牛的思路,才知道原來是枚舉交換範圍加求最短路啊..果然巧妙.假設酋長的等級是N,等級交換差距限制是M,那麼探險家只能和N-M到N+M等級範圍內的人交換物品但是並不代表探險家能在這個範圍內自由交換,比如說,你和N-M等級的人交換了,N+M等級的人就不會和你換了..但是可以保證的是(N-M,N),(N-M+1.N+1)......(N,N+M)這些分範圍內的人都是能自由交換的,彼此最大等級差

並查集基礎題 POJ1611 POJ1703 POJ1988

剛學習了並查集,於是找了幾道並查集的基礎題來做,感覺掌握的不是很牢固,POJ1182食物鏈和ZOJ3261星星能量這兩題都沒能做出來..先放著,以後再做.  POJ1611 確定SARS病毒的傳播圈,並查集的第一題,因為在學習階段,所以就照著兩種寫法都寫了一遍1.初始化每個元素為獨立集合,用rank來標記每個集合的人數,初始為1,然後每次合并跟新根的rank值,並且都是將較小的節點作為根,最後查看rank[0]就可以了#include <iostream>#include

POJ 1125 Stockbroker Grapevine (Floyd)

 訊息傳播,每個人只有從固定的人那裡得到資訊才會相信,且傳播需要時間.求所有人都知道訊息的最短時間以及訊息是從哪個人發出的..很明顯的求全源最短路徑,直接用Floyd就可以了.遍曆從每一個人發出訊息所需要的時間,取最大值,如果不能讓所有人都收到就繼續遍曆下一個人,如果可行就用結果跟新min值,如果所有人都不可行顯然是"disjoint";#include <cstdio>#include <cmath>#include <algorithm>#define

POJ 1125 Frogger (Floyd)

 青蛙從一號石頭跳到二號石頭,還有一些石頭可以作為跳板,問選擇怎樣的路徑可以使最大跳的長度最短,求該長度.看了Discuss裡做法很多,有求最小產生樹的,有求最短路徑的,其實個人感覺這題更像是Floyd的變形,更改Floyd的鬆弛條件為d[i][j]=min(d[i][j],max(d[i][k],d[k][j]))即看選擇了d[i][j]後會不會減小最大跳長度,最後輸出d[0][1]就可以了..#include <cstdio>#include

POJ 2240 Arbitrage (Floyd)

 也是一道資金兌換的題..直接按照比例兌,而且沒有給起始點,考慮用Floyd演算法.但是Floyd稍微有些修改,加法改為乘法,使該點到其他點匯率最大最終要換回自己d[i][j]是i換j的最大匯率,而d[j][i]則是j換回i的最大匯率,所以最後只要枚舉d[i][j]*d[j][i]即可,看是否有結果大於1.#include <cstdio>#include <string.h>#include <math.h>#define INF 1e5 using

HDU_Steps7.2 HDU2824 HDU1787 HDU1757 HDU3579 HDU1299

 STEPS7.2 數論 ( 數論一直很爛啊。。。) 7.2.1 HDU2824 The Euler function歐拉函數,打表sum[i]表示phi[1]到phi[i]的和,最後輸出sum[b]-sum[a-1]7.2.2 HDU1787 GCD Again結果是n-euler(n)-1,eular(n)代表小於n的與n互質的數的個數7.2.3 HDU1757 A Simple Math ProblemIf x < 10 f(x) = x.If x >= 10 f(x) =

HDU_Steps 6.1 產生樹 HDU1102 HDU1162 HDU1232 HDU1233 HDU1879 HDU1301 HDU3371 HDU3367

HDU_STEPS 6.1 最小產生樹 6.1.1 HDU 1102 Constructing Roads 裸的最小產生樹6.1.2 HDU 1162 Eddy's picture 最小產生樹,每兩點直接連線建圖6.1.3 HDU 1232 暢通工程 用並查集將圖分塊,然後修N-1條路即可6.1.4 HDU 1233 還是暢通工程 還是最小產生樹6.1.5 HDU 1879 繼續暢通工程 在已產生部分圖的情況下產生最小產生樹,輸入的時候用並查集合并已經串連的端點6.1.6 HDU 1301

HDU_Steps7.3 母函數,組合 HDU2451 HDU1398 HDU2152 HDU1709 HDU1028 HDU3398 HDU2179

HDU_Steps7.3母函數,組合 7.3.1 HDU2451 Simple Addition Expression 組合求三個數相加不進位的情況有多少種,顯然個位元是0,1,2,最高位是1,2,3,其它位是0,1,2,3。#include<cstdio>#include<cmath>#include<string.h>using namespace std;char s[15];//傳入數組下標和當前位置開始剩餘的長度int solve(int

[解題報告]Ural 1010 Discrete Function

     原題地址:http://acm.timus.ru/problem.aspx?space=1&amp;num=1010       題目大意,定義在{1,2,3,4.....N}上的離散函數,N<=100000,函數值為long int型,找出兩點,滿足兩點之間所有點都在兩點連線之下,找出這樣的兩點,使斜率最大.       看完題目,很自然的想到對每兩個點之間連線的情況進行枚舉,這樣的時間複雜度為O(n平方).       <<演算法藝術與資訊學競賽>&

HDU_Steps6.2 最短路 HDU2544 HDU2112 HDU1385 HDU2923 HDU2722 HDU2377 HDU3191 HDU3399

6.2.1 HDU2544 最短路 裸的dijkstra6.2.2 HDU2112 HDU Today 資料規模小,map轉字串為數字點,然後dijkstra6.2.3 HDU1385 Minimum Transport Cost 利用dijk的特性來記錄路徑,路徑相等時比較當前路徑和已存路徑的字典序#include <cstdio>#include <algorithm>#include <queue>#include

HDU_Steps8.3 矩陣應用 HDU1575 HDU1757 HDU2294 HDU2254 HDU2276 HDU2855 HDU3519 HDU3509

STEPS8.3一些矩陣的應用,還是比較難的HDU1575 Tr A 矩陣相乘基礎題HDU1757 A Simple Math Problem 7.2中的題目,重複了,構造矩陣HDU2294 Pendant

[解題報告]Ural 1011 Conductors

題目地址:http://acm.timus.ru/problem.aspx?space=1&num=1011 題目大意,城市有很多售票員,人數超過市民人數的P%而不倒Q%,求出最小市民數.其中題目給出的p和q最多到小數點後兩位.       

HDU_Steps6.3 二分圖 HDU1054 HDU1068 HDU1150 HDU1151 HDU1498 HDU1528 HDU1507 HDU2768

6.3.1  HDU1054 Strategic Game給出一顆樹,如果一個點被覆蓋,則與他相連的邊都被覆蓋,求最少需要多少個點來覆蓋這顆樹,二分圖和樹形DP都可以解決,DP會更快一些DP演算法,對於每個點可以選擇放或者不放,令all[v]表示覆蓋以v為父節點的子樹所需要的最小衛兵數,dr[v]表示這一點放衛兵覆蓋子樹的最小衛兵數,顯然對於某一點,若這一點不放,則它的兒子節點都要放sum1=sigma[dr[v]],若這一點放,下面的節點只要被覆蓋即可dr[root]=1+sigma(all[

[解題報告]POJ2352 Stars 樹狀數組

剛學完樹狀數組,趁熱打鐵,AC了一道樹狀數組的基本題因為x,y已經排序好,所以後輸入的星星的不可能在先輸入的星星左下,可以一邊輸入一邊更新樹狀數組,c[i]表示的是樹狀元素中的值,sum(i)即可求出該位置左邊一共有多少星星(先輸入的星星一定不會在它上方,可以不考慮y),之後跟新這一點的值..需要注意的是,座標有可能為0,而樹狀數組是從1開始的,所以對應的x+1再傳入樹狀數組中,防止TLE./*StarsTime Limit: 1000MSMemory Limit: 65536KTotal

HDU_Steps7.1 幾何入門 HDU2108 HDU1886 HDU1115 HDU1392 HDU1577 HDU1147 HDU2215 HDU2202

 7.1.1 HDU2108 Shape of HDU 判斷凸多邊形,每連續三個點之間求叉積判斷即可7.1.2 HDU1086 You can Solve a Geometry Problem too判斷線段相交,模板題,參考吉大模板7.1.3 HDU1115 Lifting the Stone多邊形重心,模板題,參考吉大模板7.1.4 HDU1392 Surround the Trees凸包,計算周長 #include <cstdio>#include <string>

總頁數: 61357 1 .... 20320 20321 20322 20323 20324 .... 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.