演算法解題(2)

以C++為主,部分題目增加或使用Python解

北市資訊能力競賽有關題目

ch8  線性資料結構(Queue、Stack或Linked List) 與優先權佇列(Priority Queue)

佇列(Queue)

練習題  uva-10935 - Throwing cards away I  queue

(列入STL單元)練習題uva12100 - Printer Queue模擬Queue運作

堆疊(Stack)

(上課)練習題  uva-514-Rails   stack 

(上課)練習題uva-442 - Matrix Chain Multiplication將矩陣加入堆疊中,遇到),若堆疊能個取出兩個,就取出相乘,加回堆疊,最後會剩下一個

(列入STL單元)練習題  101北市賽-2-pairing

練習題  APCS202001 第3題砍樹  堆疊 2022.11.7

練習題  d016: 後序運算法    Stack

練習題  uva-673-ParenthesesBalance  使用Stack驗證括弧有無配對出現


鏈結串列(Linked-List)

*(上課)練習題uva-11988 - Broken Keyboard 使用link list從頭插入,從中插入,從尾巴插入

*(作業)練習題 UVa-12657 Boxes in a Line 雙向循環鏈結串列

練習題uva-12207 - That is Your Queue,使用stl中的list模擬Queue

練習題105北市賽  地雷區  模擬 link-list 排序

(列入STL單元)練習題  uva-540 - Team Queue  queue,使用stl中的list模擬Queue,團體排隊團體插隊,同d718: Waiting In Line

(列入STL單元)練習題  d718: Waiting In Line  queue,使用stl中的list模擬Queue,團體排隊團體插隊,  同acm-540 - Team Queue

(列入STL單元)練習題  c073-uva101-TheBlocksProblem 自訂linkedlist 

優先權佇列(Priority Queue)

練習題uva11134 - Fabled Rooks  Greedy與Priority Queue

練習題uva-10954 - Add All Huffman編碼  Priority Queue

(列入STL單元)練習題uva 136 - Ugly Numbers使用priority queue紀錄下一個要選出來的數,使用set判斷是否曾經出現過

綜合題型

練習題  uva 11995 - I Can Guess the Data Structure!  判斷是否為Queue或Stack或Priority Queue

ch9  Tree 

*(上課)練習題uva-679 - Dropping Balls樹的任何一個點第一次走左邊,第二次走右邊

*(上課)練習題uva-839 - Not so Mobile 利用二元樹走訪解題

*(上課)練習題  acm-297 – Quadtrees  建立樹、合併樹、DFS

練習題 APCS10610第3題樹狀圖分析     樹狀結構 

練習題 APCS202001 第4題自動分裝  樹狀結構 2022.11.7

練習題 APCS202210 第3題石窟探險 樹狀結構+DFS  樹狀結構+BFS

練習題 APCS10503第4題血緣關係      樹狀結構+DFS 

(作業)練習題uva-699 - The Falling Leaves利用二元樹走訪解題,遞迴函式中輸入索引值,將結果記錄在陣列中,索引值位移MAX/2

(作業)練習題  acm-548 - Tree使用postorder與inorder建立BinaryTree,找出最小路徑和的最小leaf node  

(作業)練習題  c126-acm-536-TreeRecovery  使用preorder與inorder建立BT並使用postorder走訪  同acm 10701 - Pre, in and post

練習題 (111技藝競賽程式設計實作題) Problem P 二元樹

練習題 UVa806 Spatial Structures 遞迴模擬四分樹 2022.11.27

練習題 UVa10410 Tree Reconstruction 2022.11.28

練習題  c131:acm615 Is It A Tree? 利用樹與DFS的原理,判斷是否為樹

練習題  acm-599 - The Forrest for the Trees 使用DFS判斷樹的個數

練習題  acm-112 - Tree Summing 遞迴建立tree並由root走到leaf,計算和

練習題  acm 10701 - Pre, in and post使用preorder與inorder建立BT並使用postorder走訪 同c126-acm-536-TreeRecovery 

練習題  d526: Binary Search Tree (BST)  Binary Search Tree使用preorder走訪

練習題  c101-acm-122 - Trees on the level 建立二元樹,印出樹以階層印出。

練習題uva-712-S-Trees使用DFS模擬樹的走訪

練習題UVa1264 - Binary Search Tree  建立Binary Search Tree並計算左右子樹個數,計算組合數,使用DFS計算結果 2021.11.22

*ch10  圖論(一)

*BFS走訪,廣度優先搜尋

*(上課)練習題  d191: uva11352 - Crazy King   BFS  繞過障礙物,從來源到目的地 計算最少步數

(作業)練習題439 - Knight Moves,BFS

練習題 APCS201910 第3題闖關路線 BFS 2022.11.9

練習題 i793: pC. WAKUWAKU 尋找興奮源  BFS 2022.11.2

練習題uva10603 – Fill  BFS,使用priority queue每次找出倒水量最少的node,node紀錄三個杯子的水量,與倒水量,v[][]記錄前兩個杯子水量,有沒有使用過,為了避免重複拜訪

練習題 UVa 1601 The Morning after Halloween 2023.1.5

(作業)練習題uva1600 - Patrol Robot,BFS,ans[i][j]紀錄目前的最小步驟數,有比較小的再加入queue,過程中只要障礙物個數不超過k,且有較小的步驟數都要考慮,chess[i][j]紀錄網格狀態。

練習題  b059: 4. 靈犬尋寶 繞過障礙物,從來源到目的地

練習題  d453: 最短距離  BFS

練習題  d406: 倒水時間 BFS

練習題  uva 10067 - Playing with Wheels BFS 四個數字每個數字分別加減1,計算到達目標數字的最少轉動次數

練習題  uva 10187 - From Dusk Till Dawn   Graph   BFS  先將第一天可以連接的點加入到queue,取出queue再由這些點,找出所有第二天的所有的點加入到queue,直到取出的點為目的地為止。

 練習題  100北市賽 4 -合法的著手Go

練習題uva10044 Erdos numbers找出論文與每個作者的erdos number

練習題uva-821-PageHopping,BFS,找出每個網頁連出去,相對所有網頁的次序,累加這些數值,也可以使用Floyd演算法解題。


 *DFS走訪,深度優先搜尋

*(上課) UVa 572 Oil Deposits  DFS 

*(上課)練習題    APCS    10503第4題血緣關係      樹狀結構與DFS

練習題  b093: G. 丁丁共和國  使用deque建立順向與逆向adjacency list,並使用DFS演算法找出可以最深的深度,使用vector將國名轉成數字編號

練習題uva-10763 - Foreign Exchange建圖與DFS

練習題  a290: 新手訓練系列 ~ 圖論  使用deque建立順向adjacency list並使用DFS演算法      

 練習題  d536: 98台北縣 第三題:圖形迴圈偵錯問題  使用deque建立adjacency list,並使用DFS演算法,找出每個點的可能loop,於DFS中傳入開始點,使用global變數紀錄最短深度。

練習題  UVa-11094 - Continents使用DFS找尋最大土地面積

練習題UVa-11244 - Counting Stars使用DFS找尋最大面積為1的個數

練習題UVa-11283-Playing Boggle   從4x4的字元陣列中找出單字是否存在於4x4的字元陣列中,八個方向(上下左右與斜線)視為相鄰,使用DFS搜尋,注意找不到的退回上一步的處理

練習題UVa-1267 - Network   2020.10.19

ch11 圖論(二)

矩陣乘法

 練習題  b062: 1. 城市道路連通網  94全國 使用矩陣表示圖形,使用矩陣乘法找尋可能性 DP

*圖形最短路徑

Dijkstra 

 練習題  d793-acm-929-NumberMaze  使用Dijkstra、DP、 priority_queue,不能使用Floyd演算法

練習題uva-12661-FunnyCarRacing,Dijkstra演算法,來得及,到達時間在週期0到tmp.a-tmp.t之間,離開時間為到達時間加上該路徑所需時間;來不及,到達時間大於tmp.a-tmp.t,到達時間改成下一個周期的開頭,離開時間為到達時間加上該路徑所需時間。

練習題uva-10986-Sending email,找最短路徑

BellmanFord 

練習題uva-10801-LiftHopping計算每部電梯,到該部電梯任兩個樓層的時間到g[f1][f2],使用BellmanFord演算法,計算t[i]=min(t[i],t[p]+g[p][i])是否更小的t[i]。

練習題uva-558 - Wormholes判斷負環

Floyd-Warshall

 練習題  c125:acm534 Frogger  Floyd-Warshall min(dis[i][j],max(dis[i][k],dis[k][j])) 

練習題  b017:npsc2006高中組初賽 E. 漢米頓的麻煩Floyd-Warshall 沒有路徑相連要設為999999,而不是0

 練習題  c128: acm-544 Heavy Cargo   使用Floyd演算法,稍做修改使用以下概念max(map[i][j],min(map[i][k],map[k][k])) 

練習題  d589: B. 水之國的奇幻冒險  使用Floyd演算法,稍做修改使用以下概念min(map[i][j],max(map[i][k],map[k][k])) 

練習題 10099 - The Tourist Guide 使用Floyd演算法,稍做修改使用以下概念max(map[i][j],min(map[i][k],map[k][k])) 類似c128: acm-544 Heavy Cargo

練習題uva247 - Calling Circles 利用Floyd看兩個人是否有關係

練習題uva-10048 – Audiophobia Floyd演算法min(map[i][j],max(map[i][k],map[k][j]))

練習題uva-821-PageHopping,Floyd演算法找最短路徑,網頁與網頁距離為1,G[][]為很大的值,才會更新, G[i][i]=0,避免G[i][i]更新。 也可以使用BFS演算法解題。

練習題uva-1001 - Say Cheese,Floyd演算法找最短路徑,hole與hole之間可以快速轉換,吃cheese的速度很慢,hole與hole中心點之間直線是最短距離,求出n個hole之間的距離儲存到G[][],開始與結束點可以視為兩個hole,半徑為0,相當於求n+2個hole的G[n][n+1]最短路徑。

Topology Sort 

*(上課)練習題  uva 10305 - Ordering Tasks 使用陣列紀錄每個點的in-degree,若某點的in-degree為0,該點可以輸出,並將該點所連出去所有點的in-degree減1,再找出下一個in-degree為0的點輸出。

APCS202306第4題 開啟寶盒 拓樸排序 2023.06.19

APCS202401第3題  邏輯電路  類似拓撲排序 2024.01.12 C++  


Euler Circuit一筆畫 

   練習題  uva-10129 - Play on Words       Euler Circuit問題

Kruskal最小生成樹前言--並查集(Union-find Algorithm)

練習題UVa1160-X-Plosives   2021/01/25

練習題UVa 1329 - Corporative Network  2021/01/26

 Kruskal最小生成樹

 練習題  a129-最小生成樹         Kruskal、最小生成樹

練習題  d909: 公路局局長的煩惱!?  Kruskal、最小生成樹

練習題  d946-npsc-高中組初賽 D. 阿克圖洛斯‧蒙斯克的煩惱  Kruskal、最大生成樹

練習題  acm 10034 – Freckles   Kruskal、最小生成樹,輸出距離和

練習題  acm 10147 – Highways  Kruskal、最小生成樹的變形,已經有一些邊被選了,輸出選擇的邊

 練習題  acm 10397 - Connect the Campus  Kruskal、最小生成樹的變形,已經有一些邊被選了,輸出距離和

 acm 10034 – Freckles、 acm 10147 – Highways與 acm 10397 - Connect the Campus三個問題很接近。

  練習題uva-1395-SlimSpan  Kruskal由最小weight為起始邊,找出生成樹,就計算苗條度,不斷往越重的邊為起始邊,直到起始邊的剩餘邊數一定要大於n-1個邊

練習題uva1665-Islands,Kruskal演算法變形,將每個點以高度由高到低排序,每次找高度最高的點,與附近四個點看高度是否也符合,若是進行合併。

 articulation point(關節點)

  練習題  acm-10199 - Tourist Guide  articulation point

 練習題  acm-315-Network   articulation point

articulation  edge(關節邊或橋)

練習題  uva796 - Critical Links  articulation  edge

練習題uva-12783 - Weak Links   articulation  edge

Strongly connected components

練習題  b201:npsc2008高中組初賽 F. 國家   有向圖的Strongly connected components使用deque建立順向與逆向adjacency list,使用algorithm的sort

 MAX-Flow

 練習題  10092 - The Problem with the Problem Setter  MAX-Flow

練習題 10249 - The Grand Dinner MAX-Flow

練習題uva-753-A Plug for UNIX 插座到目標點流量為1,來源點到設備流量為1,設備到設備的插座流量為1轉換器的兩種插座流量為無限大。 使用hash(map)將字串名稱轉成數字,最後使用Edmonds-Karp演算法計算最大流量。

練習題11082 - Matrix Decompressing所有陣列元素值減去1,起始點到第j行加總的每個點(編號為j),流量為Cn[j]-R,所有陣列元素值減去1,第j列加總的每個點(編號為C+j)到結束點T,流量為Rn[j]-C,第j行加總的每個點(編號為j)到第k列加總的每個點(編號為C+k),流量上限為19(每個元素值為0~19),表示Ajk元素的值,Ajk正確元素值須加1,最後求出邊中fm為j,to為C+k的邊,f+1就是Ajk的解。

練習題  uva-1658 - Admiral最小流量最大花費MinCost-MaxFlow,點1對應的點v+1,流量為2,花費為0,點1為出發點,點2對應的點v+2,流量為1,花費為0, 點3對應的點v+3,流量為1,花費為0,...,到點(v-1)對應點(v+v-1),流量為1,花費為0,點v對應的點v+v,流量為2,花費為0,點2*v為目標點,題目輸入邊,點a到點b的邊,花費為c,相當於點a+v到點b,流量為1,花費為c,不斷找出最小花費的最大流量,maxF回傳true就繼續找下一條路徑的花費。

練習題  uva1349 - Optimal Bus Route Design 最小權重的二分圖完美匹配,來源點在2*n+1,目標點在T=2*n+2,n為點的個數,根據題目敘述,點j到點a,流量為1,花費為c,j等於1~n;點S到點j,流量為1,花費為0,點S為出發點,j等於1~n;點n+j到點T,流量為1,花費為0,點T為目標點,j等於1~n。 不斷找出最小花費的最大流量,maxF回傳true就繼續找下一條路徑的花費。

練習題uva 820 - Internet Bandwidth最大流MaxFlow,雙向流,建立亮兩個方向的流量

 練習題uva-1660 - Cable TV Network,最大流MaxFlow,拆點,雙向流,建立亮兩個方向的流量。v-> v+n ,流量為1,v=0~(n-1) 。邊(a,b),改成v+a -> b,流量為INF;v+b -> a,流量為INF。列舉s與t,將s->s+n,流量為INF;將t->t+n,流量為INF,求MaxFlow(s,t+n)

練習題uva1663 - Purifying Machine二分圖最大匹配數,先將點分成兩部分以color[]的值決定,這兩部分內的點之間都不能有邊相連,color[]的定義為跟第一個數字字串差奇數個color[]為1,跟第一個數字字串差偶數個color[]為0。來源點S在n,目標點T在n+1,n為點的個數,在左半部點j(color[]為0)連到點j有關係的點(color[]為1且數字差異的個數為1),流量為1,點S到點j(color[]為0),流量為1,點S為出發點,點k(color[]為1)到點T,流量為1,點T為目標點,找出最大流量,結果為點的個數減去最大流量。

練習題uva12549 - Sentry Robots二分圖變形,列的編號記錄在row[][],從1開始編號,遇到障礙要拆開,假設編到R,行的編號記錄在col[][],從R+1開始編號,遇到障礙要拆開,假設編到R+C。來源點S在0,目標點T在R+C+1,根據題目敘述,使用巢狀迴圈找出所有gra[][]為1的點,該點的row[][]到該點的col[][],流量為1,點S到1~R,流量為1,點S為出發點,點(R+1)~(R+C)到點T,流量為1,點T為目標點,找出最大流量。

Floyd's cycle-finding algorithm

練習題uva-1594 - Ducci Sequence    暴力或Floyd's cycle-finding algorithm解題

其他

練習題  115 - Climbing Trees  建立關係圖,使用DFS找尋要查詢兩位關係的所有祖先,再判斷是什麼關係。

 練習題  d768: 10004 – Bicoloring DFS加上顏色判斷

練習題  10054 - The Necklace  Euler Cycle

練習題  acm-10158-War  使用集合與集合的聯集


二分圖(Bipartite Graph)

練習題 APCS202111 第4題真假子圖  DFS、並查集、二分圖

練習題 UVa1627 - Team them up 二分圖+DP 2024.02.01



ch12幾何

練習題d055: 11437 - Triangle Fun

練習題UVa11646 - Athletics Track   圓弧 2021.12.08

練習題 uva 1451 Average 

Step1)已經形成下凸幾何圖形所有點,新加入的d點,若造成下凸幾何最後一些點變成上凸點就可以刪除這些上凸點

Step2)在剩下的下凸點中,找出至少長度為L的i點,i點與剩下的下凸點斜率最大的值,若斜率一樣最比較長度是否較短,

較短就更新長度、紀錄起始點與終止點;若斜率較斜更新長度、紀錄起始點與終止點。

練習題d170-飛蛾撲火(一)

練習題c049: acm-356-Square Pegs And Round Holes 判斷四分之一圓的每個方格的四個點是否在半徑內,或者部分在半徑內,或都沒有

練習題378 - Intersecting Lines 四個點求直線,八個點求兩條線是平行、重疊、交於一點,是否有相同斜率不要用除法,zerojudge會有浮點數不精確問題 

練習題c116-uva-438The Circumference of the Circle 平面中三點求圓的周長 

練習題d174: uva10297: Beavergnaw 公式解 

練習題uva 1641 - ASCII Area由上到下,由左到右,奇數的/或\表示之後的.在圖形內

練習題uva1643 - Angle and Squares,外積求面積,最大面積為所有正方形對角線成一直線相連

練習題105北市賽 導線短路   判斷兩線相交

練習題 UVa 1398 - Meteor   計算XY平面的直線運動  多鍵值排序    2020.10.17

練習題UVa11178 - Morley's Theorem計算兩直線交點 2021.11.26

練習題UVa1342-That Nice Euler Circuit  尤拉定理 2021.11.29

練習題UVa11800 - Determine the Shape 內積與外積 2021.12.08

練習題UVa 12304 2D Geometry 110 in 1 與圓有關的計算幾何 2021.12.1

練習題103北市賽 領土    凸包

練習題UVa-10652 - Board Wrapping 凸包 2021.12.4

練習題UVa11168 - Airport 凸包 2021.12.5

練習題UVa10256 - The Great Divide凸包是否相交 2021.12.5

練習題UVa11275 - 3D Triangles 三維計算幾何 2021.12.7


ch13數學

練習題a059. 完全平方和

練習題d059: 數學函數練習

練習題d493-入求(求系列1)

練習題d171: 飛蛾撲火(二)

練習題d658: acm 11636 - Hello World  取log2

練習題d709: 判断质数(一) 求質數演算法要優化

練習題d265:acm10165 Stone Game  exclusive-OR 

練習題c015-uva-10018 reverse and add

練習題uva 701 - The Archeologists' Dilemma 使用數學對數,N*10^K  <=  2^E  < (N+1)*10^K  取log2,log2(N)+K*log2(10)<= E < log2(N+1)+K*log2(10)  K=(輸入N的位數加1開始往上遞增)直到包夾一個整數為止。

練習題a993-uva 10127 – Ones  數學數字位移與求餘數

練習題uva-847 A Multiplication Game  2 - 9  Stans Wins.   10 - 9x2 Ollie Wins.  9x2+1 - 9x2x9  Stans Wins.    9x2x9+1 - 9x2x9x2 Ollie Wins

練習題uva-10049Self-describingSequence  1,2,2,3,3,4,4,4,5,5,5,6,6,6,6…. 

練習題a007判斷質數  使用篩選法求質數。

練習題c088: 00516 - Prime Land  質因數分解

練習題d362: 10394 - Twin Primes 求20000000以內所有質數,n與n+2皆為質數  使用篩選法求質數。

練習題a702: Cousin Primes求20000000以內所有質數,n與n+4皆為質數  使用篩選法求質數。

練習題a626: 6. Prime Directive 求1000以內所有質數 五個五個一行

練習題d613: Prime Gap質數與質數間間隔幾個數字,使用二元搜尋

練習題d239: Problem 47 找出質因數分解連續四個數都有四個質因數

練習題d262: Problem 47 HARD找出質因數分解連續五個數都有五個質因數

練習題a647: 投資專家  不要用除法,要小數點以下三位轉成整數相除,再四捨五入

練習題d256: 11388 - GCD LCM

練習題uva11582-ColossalFibonacciNumbers  Fib數列求2到1000的餘數,Fib(0)=1,Fib(1)=1,找到下一個重複的0,1,求出2到1000的長度與餘數數列,長度(儲存在cycle[])與餘數數列(儲存在m[][])。Fib(a^b)求n的餘數,相當於求(a%cycle[n])^b除以cycle[n]的餘數(使用divide-and-conquer),依照此餘數再到m[n][餘數]得到結果

練習題uva12169 - Disgruntled Judge列舉a與b,根據x1、x3...判斷是否a與b是正確的,若正確,輸出x2、x4...

練習題uva10375 - Choose and divide          p!/(q!(p-q)!)=p(p-1)(p-2)…(p-q+1)/q(q-1)(q-2)…1 => (p-q+i)/i,i=1,2,3,…,q   而  (s!(r-s)!)/r!=s(s-1)(s-2)…1/r(r-1)(r-2)…(r-s+1) => i/(r-s+i),i=1,2,3,…,s

練習題uva1635 - Irrelevant Elements將m進行質因數分解,m最大到1000000000,先求出100000以內質數,進行質因數分解,判斷C(n-1,i)是否是m的倍數,是否大於m質因數分解的每個質數的次方值

練習題uva10820 - Send a Table 求小於等於n所有任選兩數互質的個數令為f(n),phi(i)為小於i與i互質的個數,f(n)=phi(2)+phi(3)+…+phi(n),答案為2*f(n)+1,1為(1,1),2*f(n)表示兩數可以互換,視為不同。

練習題uva1262 - Password找出每行相同的字元,去除重複的字元,將字元進行排序,記錄每行字元個數,利用排列的概念、除法與求餘數得到最後的答案。

練習題uva1636 – Headshot,shoot機率,計算00個數除以00與01個數加總(0的個數),第一個與最後一個字元視為相連, rotate機率,計算0個數除以字元長度

練習題uva10491 - Cows and Cars機率,第一次選到cow的機率cow/(cow+car),選擇一定換到車的機率car/(cow+car-show-1),第一次選到car的機率car/(cow+car),選擇一定換到車的機率(car-1)/(cow+car-show-1)

練習題uva12230 - Crossing Rivers期望值,過河的時間介於L/v與3L/v(到時船已經開走),平均期望值為2L/v,走路的時間為走路的距離(D-sum(L))/1

練習題uva11346 – Probability 積分

練習題uva11971 - Polygon機率與幾何,無法形成多邊形,其中一邊大於等於一半,其餘k個點(含最大邊的另一端點)落於另一

半,機率為1/(2^k),這樣的k點有k+1種可能組合,1減去無法形成多邊形,就是可以形成多邊形,1-(k+1)/(2^k)=(2^k-k-1)/(2^k)需約分

練習題uva1640 - The Counting Problem 假設a<b,分別計算0到(a-1)與0到b所有數字出現次數,將0到b所有數字出現次數 減去 0到a所有數字出現次數

練習題uva 1363 - Joseph's Problem,n與k,i=1到k,n/i=p(取整數),相同p的情形下,餘數呈現遞減等差數列,等差數列有n/i=p...q第一個遇到的i,q/p+1為等差數列的長度

練習題uva11440 - Help Tomisu,1到m!的所有數求與m!互質的個數,相當於取phi(m!),m為非質數,phi(m!)=phi((m-1)!)*m,m為質數,phi(m!)=phi((m-1)!)*m*(1-1/m)=phi((m-1)!)*(m-1),答案為phi(m!)*n!/m!

 練習題uva-10791 - Minimum Sum LCM,質因數分解,每個因數與該因數的指數當成一個數字的和最小。n=1,結果為2;當質因數只有一個數字,結果為n+1;n=2147483647,是質數,結果為n+1,使用int會溢位。

練習題  uva1644 - Prime Gap質數與二分搜尋

練習題uva1210 - Sum of Consecutive Prime Numbers連續質數和

練習題uva10539 - Almost Prime Numbers利用篩選法找出1000000以內的質數,將所有質數的二次方、三次方...小於10^12以內的n次方都加入陣列中,排序陣列,使用二元搜尋左邊界與右邊界,輸出左右邊界相減的個數。

 練習題uva294 - Divisors, 求出31622(sqrt(10^9))以內質數,利用這些質數進行質因數分解。

 練習題10622 - Perfect P-th Powers, 求出31622(sqrt(10^9))以內質數,利用這些質數進行質因數分解。 注意-2^31與負數,負數的次方須除以2剩下奇數為止

練習題uva 11526 - H(n) n/i結果相同的數字,一起累加,注意n<=0的部分,輸出0

練習題UVa 12716 - GCD XOR 2024.02.17

練習題UVa 11105 - Semi-prime H-numbers 2024.03.03


ch14 IterativeDeepening反覆運算加深搜尋(IDA)

 練習題  uva1374-Power Calculus 使用iterative deepening,不斷增加深度,每次只能使用一個乘法或除法,一次只能增加一個新的次方

練習題uva-1343-The Rotation Game,在DFS過程中使用目前深度(d),與八個位置中1,2,3數字,最多的數字個數,將8減去上述數字,得到mindiff,還差幾個數字完成8個都相同, 將d+mindiff進行剪枝

練習題 UVa 11212  Editing a Book  使用IDA*(Iterative deepening A*)演算法,使用d(目前深度)+H/3>maxd(最大深度)進行剪枝,以目前深度無法在最大深度找到答案


練習題 UVa12558 - Egyptian Fractions (HARD version) IDA*


Ch16      進階字串處理  

KMP演算法

UVa1328 - Period 使用KMP演算法的fail陣列   2021.2.21

字串處理Trie

練習題UVa 1401 - Remember the Word 2021.2.3

Aho–Corasick(AC)自動機

UVa1449 - Dominating Patterns   2021.2.22

UVa11019 - Matrix Matcher 2021.11.20


Ch17 雜湊(hash)

*(上課)練習題uva 1152 - 4 Values whose Sum is 0,a[]與b[]相加後每個數儲存到ab[],-c[]與-d[]相加後每個數儲存到cd[],排序ab[]與cd[],經由將ab[]每個元素使用二元搜尋cd[]中相同值個數累加起來就是答案 

附錄  大數問題 

練習題uva-10013 - Super long sums,大數加法

練習題uva-424 - Integer Inquiry,大數加法

練習題uva-10106 - Product,大數乘法

練習題uva 10220 - I Love Big Numbers !,大數階乘

練習題uva 623 - 500!,大數階乘

練習題uva-495 - Fibonacci Freeze,費氏數列,大數問題

練習題uva1646 - Edge Case,F[3]=4,F[4]=7,F[i]=F[i-1]+F[i-2],費氏數列,大數問題

推薦網站

C++  Reference