演算法知識 - Topological Ordering 拓樸排序(時間複雜度 O(V+E))

Topological Ordering 拓樸排序 介紹

在有些程式問題,可能會有以下這些需求

  • 我們需要做完 n 個任務,但有些任務有依賴需求,需要某個任務完成才可以做這個任務,請給出一份符合要求的任務清單
  • 要幫學員排隊,但有些人必須排在某些人的後面,請給出一份符合要求的排隊順序

也就是對於一個序列,其中的某兩點具有先後關係,即是拓樸排序

閱讀更多...

UVa758 - The Same Game(DFS)

題目大意

一個小遊戲(類似於 candy crush),目標是拿到最大分,規則與分數如下:

  • 有三種顏色的石頭,只要有三顆相同顏色的石頭在一起就可以被消除掉
  • 如果石頭有被消除掉,當前的格子為空,那上面的石頭會替補上來(column)
  • 如果有一整排(column)為空,那將右邊的那些石頭全部都往左移一排(column)
  • 分數計算是消掉的石頭(m) \((m-2) ^ 2\)
  • 如果全部的石頭都被消去就多獲得 1000 分

一個好的策略是從左下底端開始尋找,找出有最大堆顏色的石頭將它們消去,不斷重複至不能消除
必須要輸出如何消除、總共分數、剩下幾顆。

題目連結

閱讀更多...

UVa11094 - Continents(DFS)

題目大意:

有一個國王喜歡佔領領土,給你一張地圖,這張地圖左右邊是有相同連結的!請你找出除了國王所在的地方外,最大的一片土地,國王要去征戰他

提醒,由於國家的地圖沒有統一標準,因此陸地或是海洋的標示都不相同,但會給你國王所在地。

題目連結

閱讀更多...

Codeforces 1480D2 - Painting the Array II (設計解題、數學推理)

題目大意:

給出一個陣列,我們可以把它放到另外兩個陣列 (A,B),A,B 這兩個陣列計算元素是這樣計算的:

  • 陣列中如果周遭都是相同的數值就可以表示為一個元素,如 \((3,3,3) \) 就算一個、\((1,2,3)\) 就算是三個。
  • 順序不可以交換,必須是一開始陣列的順序,透過給予 A or B 來讓 A and B 這兩個陣列元素最小,求這兩個 A,B 全部元素的數量
閱讀更多...

UVa1260 - Sales(LIS)

題目大意:

有一家公司希望可以看今天的銷售金額比哪幾天高、等於,輸出哪幾天高的總和,如果前幾天是 \(20,30,40\),那 30 那天的銷售金額就比前一天高,輸出 1;如果是 40 那天的銷售金額就輸出 2,大於前兩天的銷售金額,請輸出總和所有的銷售金額比哪些天高的天數並減一。

題目連結

閱讀更多...
  • © 2020-2024 John Doe
  • Powered by Hexo Theme Ayer
  • PV: UV: