ACM 花生問題

2021-07-28 13:29:58 字數 2027 閱讀 7221

魯賓遜先生有乙隻寵物猴,名叫多多。這天,他們兩個正沿著鄉間小路散步,突然發現路邊的告示牌上貼著一張小小的紙條:「歡迎免費品嚐我種的花生!——熊字」。

魯賓遜先生和多多都很開心,因為花生正是他們的最愛。在告示牌背後,路邊真的有一塊花生田,花生植株整齊地排列成矩形網格(如圖 1)。有經驗的多多一眼就能看出,每棵   花生植株下的花生有多少。為了訓練多多的算術,魯賓遜先生說:「你先找出花生最多的植株,去採摘它的花生;然後再找出剩下的植株裡花生最多的,去採摘它的花生;依此類推,不過你一定要在我限定的時間內回到路邊。」

我們假定多多在每個單位時間內,可以做下列四件事情中的一件:

1) 從路邊跳到最靠近路邊(即第一行)的某棵花生植株;

2) 從一棵植株跳到前後左右與之相鄰的另一棵植株;

3) 採摘一棵植株下的花生;

4) 從最靠近路邊(即第一行)的某棵花生植株跳回路邊。

現在給定一塊花生田的大小和花生的分布,請問在限定時間內,多多最多可以採到多少個花生?注意可能只有部分植株下面長有花生,假設這些植株下的花生個數各不相同。

例如在圖 2 所示的花生田裡,只有位於(2, 5), (3, 7), (4, 2), (5, 4)的植株下長有花生,個數分別為 13, 7, 15, 9。沿著圖示的路線,多多在 21 個單位時間內,最多可以採到 37 個花生。

輸入的第一行包括三個整數, m, n 和 k,用空格隔開;表示花生田的大小為 m * n( 1<= m, n <= 20),多多採花生的限定時間為 k( 0 <= k <= 1000)個單位時間。接下來的 m行,每行包括 n 個非負整數,也用空格隔開;第 i + 1 行的第 j 個整數 pij( 0 <= pij <= 500)表示花生田裡植株(i, j)下花生的數目, 0 表示該植株下沒有花生。

輸出包括一行,這一行只包含乙個整數,即在限定時間內,多多最多可以採到花生的個數。

6 7 21

0 0 0 0 0 0 0

0 0 0 0 13 0 0

0 0 0 0 0 0 7

0 15 0 0 0 0 0

0 0 0 9 0 0 0

0 0 0 0 0 0 0

37
試圖找規律,得到乙個以花生矩陣作為自變數的公式來解決這個問題,是不現實的。結果只能是做了才知道。即走進花生地,每次要採下一株花生之前,先計算一下,剩下的時間,夠不夠走到那株花生,採摘,並從那株花生走回到路上。如果時間夠,則走過去採摘;如果時間不夠,則採摘活動到此結束。

#include #include #include #include #define max_num 55

using namespace std;

int m,n,k;

int afield[max_num][max_num];

int main()

} int ntotalpeanuts = 0;//摘到的花生總數

int ntotaltime = 0;//已經花去的時間

int ncuri = 0,ncurj;//當前位置座標,ncuri 代表縱座標,開始是在路上,所以初值為 0

while(ntotaltime < k)

}} if(nmax == 0)

//如果當前位置是在路上,那麼應走到橫座標nmaxj 處,再進入花生地

if(ncuri == 0)

//下一行看剩餘時間是否足夠走到 (nmaxi, nmaxj)處,摘取花生,並回到路上

if(ntotaltime + nmaxi + 1 + abs(nmaxi - ncuri) + abs(nmaxj - ncurj) <= k)else

} cout<

ACM幾何問題

今天覆習了一下幾何的基礎內容,順便整理了一下。其實幾何也挺簡單的,只要熟練掌握點積和叉積,這些都是易學易懂的。1.點 直線 線段 圓 三角形 多邊形 矩形 判相交,判位置,求交點,求最近點,求特殊點 三角形六心等 2.凸包 水平序,極角序 規範,非規範 3.半平面交 求核 4.旋轉卡殼 多邊形直徑 ...

ACM 開燈問題

有n盞燈,編號為1 n.第乙個人把所有的燈開啟,第二個人按下所有的編號為2的倍數的開關,這些燈全部被關掉,第三個人按下編號為3的倍數的開關,其中關掉的燈將被開啟,開著的燈將被關閉 以此類推,一共有k個人,問最後那些燈是開著的?輸入 n和k 輸出開著燈的編號 k n 1000 include incl...

ACM 硬幣問題

有1元,5元,10元。50元,100元,500元的硬幣各c1,c5,c10,c100 c500枚。現在要用這些硬幣來支付a元,最少需要多少枚硬幣?假定 本題至少存在一種支付方案 input c1 3,c5 2,c10 1,c50 3,c100 0,c500 2,a 620 output 6 incl...