close

A. Matrix

題意:

給數字陣列Ai , 用A 去組成一個matrix B 且 Bi,j = Ai*Aj

有一個數字 n, 問有幾個 submatrix 內的數字合等於 n

 

題解:

令 sum(a,b) = Aa + A(a+1) ... Ab.

假設有一個 submatrix from (a,b) to (c,d) , 要求它的合,除了把submatrix 裡的數字用暴力法算出

 

來,也可以使用Bi,j = Ai*Aj 這個特性。 submatrix 的合 = sum(a,b)*sum(c,d)。

 

也就是說,n = sum(a,b)*sum(c,d)。

 

我們先預處理: 暴力算出所有array A 的所有區間合且區間合是n 的因數

 

接下來就只要找出任2個區間合相乘= n 。

 

這題需要特別注意 n = 0 的情況。

 

B. Free Market

題意:

有n 個數字和一個數字d,算出所有的subset sum = si,每個si 都對應到一個點,若 si+d >=sj ,則此2點有一條邊。

 

另外有一個初始點 S,此點的subset sum = 0,現在從點S出發,找出可以到達最大subset sum 的點,且最少需要幾個邊?

 

題解:

類似dijkstra 。

 

注意:題目B的原意有點難懂。

 

C. Beautiful Set

題意:

有數字k,想找出一個beautiful set ,

 

beautiful set(B)的特性是

 

(1) 對於任意prime ,如果此prime 可以除以某Bi,則

此set 之中至少有一半的數字可以被此prime 整除。

 

(2) 數字大小不超過 2*k*k。

 

(3) set 大小是k。

 

題解:

看了解答後也不知原理。

 

D. Ghd

 

相當有趣的一題,用到隨機的概念去解。

 

題意:

有n 個數字Ai,找出ghd。

Ghd is a positive integer g, such that at least half of numbers from the set are evenly divisible by g

and there isn't such g' (g' > g) that at least half of the numbers from the set are evenly divisible by g'.

 

題解:

若隨便選一個r = Ai ,則其是用來算 ghd 的可能性有0.5。令ghd set 是用來算ghd 的 數字集合。

假設r 屬於 ghd set 。算出xj = gcd(r,Aj)。

 

 

ghd會是 r 的某個因數。

 

令r 的因數為 fac[i] 。

 

令 fac_count[j] 表示 xi % fac[j] == 0 的個數。


我們已知ghd 是r 的某個因數fac[i],且 fac_count[i] >=(n+1)/2。

 

現在出現一個問題,就是如果fac[i] % fac[j] == 0的

 

話,那麼fac_count[j] 需要加上fac_count[i] 。

 

最後找出滿足fac_count[i] >=(n+1)/2 的最大因數就是答案。

 

由於r是亂選的,我們只要選得夠多次,失誤機率就會下降 1 - 2g,g 為選的次數。

 

 E. Empty Rectangles

題意:給一個長方形,每個entry 只有0 或 1 的數字。 問有幾個sub rectangle 的合是等於 k。 兩邊長 < 2500。

 

題解: 若暴力解是O(n4),鐵定不行。可以使用divide and conquer。見圖。

 

E  

 

有一個函式 f(x1,y1,x2,y2) 可以找出在其範圍內sub rectangle 合等於 k 的有幾個。

 

對於一個rectangle 左上是(x1,y1) ,右下是(x2,y2),去找出經過 x = (x1+x2)/2 ,的sub rectangle 合笒於k的

 

有幾個,假設有 s 個。那麼 f(x1,y1,x2,y2) = f(x1,y1,mid,y2) + f(mid+1,y1,x2,y2) + s 。

 

交替地去切長以及寬。

 

其中有一個trick 。見圖

E1  

上面虛線範圍內是某個sub rectangle 等於 g , 且 g <=k 。如果先算出這個,那麼要算出下圖中的sub rectangle 的合=g 的情況時,

 

就不必從中線開始重算。只要從上圖中虛線繼續往2側拓展及可。

 

E2  
  

 

 

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

    斑的家

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