0
点赞
收藏
分享

微信扫一扫

hdu 5171(矩阵快速幂)


GTY's birthday gift



Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)



Problem Description


a,b∈S), and add a+b


 



Input


2≤n≤100000,1≤k≤1000000000). The second line contains n elements ai ( 1≤ai≤100000)separated by spaces , indicating the multiset S .


 



Output


mod 10000007).


 



Sample Input


3 2 3 6 2


 



Sample Output


35


 


解题思路:



想要和最大,那么每次必定从集合里面拿出最大的两个出来相加,然后k次后面就类似斐波那契数列了。

由斐波那契数列公式知:Fn=Fn-1+Fn-2,求和公式有Sn=Sn-1+Fn.因此用这两个公式构造矩阵,进行矩阵快速幂。


   

Sn-1    | 1 1 0|   Sn 
 


         Fn   * | 0 1 1| =Fn+1 
 


         Fn-1    | 0 1 0|   Fn




然后ans=(Sn+(sum-a[n-1]-a[n-2]))%mod(sum为原集合总和,然后减去最大的两个,加上k次后的序列之和(即斐波那契数列和))。

举报

相关推荐

0 条评论