題意:有乙個大小為n的可重集s,小奇每次操作可以加入乙個數a+b(a,b均屬於s),求k次操作後它可獲得的s的和的最大值。(資料保證這個值為非負數)
輸出乙個整數,表示和的最大值。答案對10000007取模。
對於30%的資料,有 n<=105,k<=105,|ai|<=105。
對於100%的資料,有 n<=105,k<=109,|ai|<=105。
顯然每次取出最大的兩個值進行操作
注意到|ai|<=105,所以ai可能為負數,這時把次大值和最大值一直加,知道加出兩個正數為止
對於最大的兩個正數,設次大值為a,最大值為b,則產生的數為
a+b,a+2b,2a+3b。。。
觀察發現係數為斐波那契數列
因為k<=109,考慮分段打表
由於斐波那契數列只需兩個連續的數即可遞推
則每隔106個數存下兩個數
則只需存下30000的**長度,而時間複雜度為o(106),可以通過
BZOJ4547 小奇的集合
有乙個大小為n的可重集s,小奇每次操作可以加入乙個數a b a,b均屬於s 求k次操作後它可獲得的s的和的最大值。資料保證這個值為非負數 很顯然,我們每次肯定是取集合中最大的兩個數,那麼我們設這兩個數為 a b,當前的和為 s 顯然有轉移 a b,b a b,s a b s,那麼用矩陣乘法加速即可。...
JZOJ 小奇採藥 (深度優先搜尋 dfs)
小奇是只天資聰穎的喵,他的夢想是成為世界上最偉大的醫師。為此,他想拜喵星球最有威望的醫師為師。醫師為了判斷他的資質,給他出了乙個難題。醫師把他帶到乙個到處都是草藥的山洞裡對他說 小奇,這個山洞裡有一些不同的草藥,採每一株都需要一些時間,每一株也有它自身的價值。我會給你一段時間,在這段時間裡,你可以採...
BZOJ4547 小奇的集合(矩乘)
傳送門 由於資料保證最後的答案為非負數,那麼序列就有兩種情況 1 序列中有兩個或兩個以上非負數。2 序列中只有乙個非負數。對於第一種情況,每一次的操作一定是將最大的兩個數相加放入序列中。比如有不降序列 a1 a2,a3 an 1,an 進行多次操作就可以寫出如下的序列 a1 a2,a3 a n 1,...