close

A. Dima and Guards

 

題意:有 n 根柱子,每個柱子旁有2個 guards ,你想要收買其中一根柱子的2個guards 。

 

每個 guard 可以接收飲料或餅乾。但是每個人對這2者的價格都不一樣,他們只接受比某個

 

價格還高的物品。

 

你有 m 元,問能不能達成任務。

 

題解: 假設guard a 可接受飲料的價格為t1, 餅乾為t2 , guard b 為 t3,t4 。

 

若 min(t1,t2) + (t3,t4) <= m 那麼就有解。

 

B. Dima and To-do List

 

題意:A1,A2...An 數字形成的陣列,另外還有一個數字 k 且 k | n 。

 

問從陣列中的哪個位置 s ( 0< s < k )開始 ,使得  sum = As + A(s+k) + A(s+2k) ... A(s+kn) 最小。

 

題解: 直接算。

 

C. Dima and Salad

 

題意:想要做一盤salad ,做salad 的食材(ai,bi) ,i < n 表示甜度及卡路里,找出甜度最大且滿足以下式子。

C  

 

題解:將式子轉換一下變成

C1  

這樣子題目就是knap-sack 的問題了,可以想成weight,value  = (ai - k*bi, ai),找出

一種組合使得 weight = 0 ,且value 最大。

 

D. Dima and Trap Graph

 

題意:有一個圖,每個邊上有2個值[l,r] ,且l < r 。

 

loyalty 表示[a,b] 的差值。

 

想要從點1 走到點n 帶著loyalty ,要通過某edge [l,r] 要滿足 l <= a < b <= r。

 

問最大loyalty 是多少?

 

題解:若有一條path ,想要完整通過,那麼loyalty 是[ max(li), min(ri) ] 。

 

可是不知道path 是哪一條?

 

從另一個角度想,是否有某個邊[ l,r] 的 [l , h] , h <=r 是 loyalty ?

 

首先從一條path 有2個邊觀察, [l1,r1], [l2,r2] ,如果兩者有交集那麼

 

loyalty 就可能是 [l2,r1] 或 [l1,r2] 。3個邊以上請自行prove 。

 

那麼我們可以對每條邊,binary search x ,[li , x ] , li <=x <= ri

 

 然後用bfs ,dfs 問可否能從點1走到點n 。

 

E. Dima and Magic Guitar

 

題意:有一個二維陣列 n x m ,每個entry aij 有值 < k 。

 

有一個陣列 Ai,  。想要找出最大 f(Ai,Ai-1) = | x1 - x2 | + | y1 - y2 | , ax1,y1 = Ai  ax2,y2 = Ai-1

 

題解:根據絕對值的性質。

 

| x1 - x2 | + | y1 - y2 | 可能是

 

x1-x2+y1-y2

 

(-x1)+x2+y1+(-y2)

 

x1-x2+(-y1)+y2

 

(-x1)+x2+(-y1)+y2

 

對於(x1,y1) 它在絕對值中佔有的合(稱為subsum)可能是

Case 1 :x1+y1,

Case 2 : -x1+y1,

Case 3 : x1-y1,

Case 4 : -x1-y1

對於(x2,y2)來說也一樣。

(x1,y1) 要和(x2,y2) 算出| x1 - x2 | + | y1 - y2 | 的話,

可能是Case 1 + Case 4 = ( x1- x2) + (y1- y2)。

或是Case 2  + Case 3  = (-x1+ x2) + (y1- y2)

或Case 3 + Case 2

or Case 4 + Case 1。

 

這題先算出ai,j 中的(i,j) 在絕對值中佔的合。

然後對於Ai 去找出它最大ax1,y1 = Ai 的subsum 和Ai-1 找出 ax2,y2 = Ai-1 的subsum 。

加起來最大的就是答案。

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 lettice0913 的頭像
    lettice0913

    斑的家

    lettice0913 發表在 痞客邦 留言(0) 人氣()