USACO演算法系列十六 續

2021-05-23 18:36:07 字數 893 閱讀 5751

題目:http://www.nocow.cn/index.php/translate:usaco/camelot

昨天晚上寫了乙個晚上的這道題,各種邊界條件和意外情況。看著自己寫的600多行**,和一連串的test ok.心裡特別有成就感,但是看了別人寫的**80幾行,就發現了實力的差距。

先說說自己的想法吧,那個高濃縮的80行**,我也不想看了。看了也看不懂。

這道題,相當於,尋找乙個集結地,使得所有騎士和國王到達集結地的總步數最少,騎士走『日』,國王可以往附近相鄰的一格,走橫、豎、斜,騎士可以帶國王走。

因此,到達集結地最短的方式,有下面幾種:

(1)所有騎士以最短路徑到達集結地,並且途中有個騎士帶上國王。

(2)其中有個騎士以最短路徑到國王位置帶上國王,然後所有騎士以最短路徑到達集結地。

(3)國王以最短路徑到最鄰近的乙個騎士,所有騎士以最短路徑到達集結地。

(4)國王自己走的集結地,所有騎士以最短路徑到達集結地。

為了判斷騎士到集結地的途中,能否帶上國王,我先以國王為起點遍歷到所有騎士距離k【i】(i為第幾個騎士),則如果集結地到國王的步數l + 國王到騎士的步數k【i】== 集結地到達騎士i的步數,則說明騎士去集結地的途中能帶上國王。如果起初國王的位置上就有騎士,此步可以跳過。則最短距離就是所有騎士到集結地的距離。

否則根據(2)(3)(4)來求得最短距離。

(2)為所有騎士到集結地的步數和 + 最小騎士到國王的步數 + 國王到集結地的步數 - 帶著國王的騎士到集結地的步數。

(3)為所有騎士到集結地的步數和 + 國王到最近的騎士的步數

(4)為所有騎士到集結地的步數和 + 國王到集結地的步數。

我知道,這個方法很爛,**像封建社會女人的裹腳布,但是它ac了,我對它都絕望的時候,它ac了,哈哈哈……………………

執行結果如下:

USACO演算法系列十四 fence

題目 http www.nocow.cn index.php translate usaco fence 看完這道題目的第一想法就是,遍歷所有的邊,而且每一條邊的經過次數只能一次。是離散數學裡面的圖論的尤拉通路問題,在這裡充分體現了數學的重要性。定理 無向圖g有尤拉通路的充分必要條件是g為連通圖,並...

USACO演算法系列 討論篇

這道題目來自於我同學的口述,大意是這樣,有n個房間,編號為1,2,3 n,裡面有1個寵物,然後你每次只能開啟乙個房間,如果沒有找到,寵物必須隨機向左向右移動一次,問你如何以最快的開門方式找到寵物。eg,有3個房間,那麼你只要至多開啟中間的房間兩次就可以找到寵物了。分析 用n個位來表示n個房間,0 代...

USACO演算法系列七 stamps

題目 郵票數可以顯示最大連線自然數的問題,看到這道題目第乙個想到的是整數劃分問題。但是又很不一樣。第一它不用考慮這個整數的所有劃分情況,而是只要考慮整數是否可以被 k個郵票表示。最簡單的想法,用stamp n 陣列表示郵票,然後遞增考慮1到k stamp n 範圍的自然數的劃分,直到不能劃分為止。為...