天天看點

Codeforces Round #214 (Div. 2)——Dima and Salad

題意:

一行a[i],一行b[i],a和b是一一對應的。選取任意個數對,使得sigma(a)/ sigma(b)等于k,求這時候sigma(a)的最大值

分析:

這個題目關鍵在于對sigma(a)/ sigma(b)== k的處理。對于這種式子,用每個數的比值顯然是不行的,因為沒法累加;而且是double型,沒法DP

考慮一個每個數對對這個式子的影響,如果每個數都是a = k * b,那麼顯然是可以的;如果a小于k * b,那麼在整體中,目前數對少的數肯定要有一些數對來補償,也就是說,記x = k * b - a,所有選擇的數對的x的和應該是零。

那麼,每個數對其實就變成了一個可正可負的數,求若幹個和為零的數的sigma(b)的最大值,正負分開,用背包解決即可