hdu 5171 GTY's birthday gift (构造矩阵)
2015-02-26 19:21
295 查看
题意:
给出n个数的集合,集合允许有重复的数,每次选集合两个数相加加到集合里面,可以操作k次,问集合的和最大是多少。
题解:
会发现其实每次都选择最大的两个加,这样就形成了类似斐波那契的数列。
构造矩阵解之。
给出n个数的集合,集合允许有重复的数,每次选集合两个数相加加到集合里面,可以操作k次,问集合的和最大是多少。
题解:
会发现其实每次都选择最大的两个加,这样就形成了类似斐波那契的数列。
构造矩阵解之。
#include<iostream> #include<math.h> #include<stdio.h> #include<algorithm> #include<string.h> #include<vector> #include<queue> #include<map> #include<set> using namespace std; #define B(x) (1<<(x)) typedef long long ll; const int oo=0x3f3f3f3f; const ll OO=1LL<<61; const ll MOD=10000007; const int maxn=2; int n; int val[100005]; struct Matrix { ll maze[3][3]; friend Matrix operator*(Matrix a,Matrix b) { Matrix c; memset(c.maze,0,sizeof c.maze); for(int i=0;i<3;i++) for(int j=0;j<3;j++) for(int k=0;k<3;k++) c.maze[i][j]=(c.maze[i][j]+a.maze[i][k]*b.maze[k][j]+MOD)%MOD; return c; } friend Matrix operator^(Matrix a,ll k) { Matrix c; for(int i=0;i<3;i++) for(int j=0;j<3;j++) c.maze[i][j]=(i==j); while(k) { if(k&1) c=c*a; a=a*a; k>>=1; } return c; } }; int main() { int a,b; ll k,sum; Matrix A; A.maze[0][0]=1;A.maze[0][1]=1;A.maze[0][2]=1; A.maze[1][0]=0;A.maze[1][1]=1;A.maze[1][2]=1; A.maze[2][0]=0;A.maze[2][1]=1;A.maze[2][2]=0; while(scanf("%d %I64d",&n,&k)!=EOF) { sum=0; for(int i=1;i<=n;i++) scanf("%d",&val[i]); sort(val+1,val+1+n); for(int i=1;i<=n-2;i++) sum=(sum+val[i]+MOD)%MOD; a=val ; b=val[n-1]; ///接下来是矩阵快速幂 Matrix F1; memset(F1.maze,0,sizeof F1.maze); F1.maze[0][0]=a+b; F1.maze[1][0]=a; F1.maze[2][0]=b; Matrix ans=(A^k)*F1; cout<<(ans.maze[0][0]+sum+MOD)%MOD<<endl; } return 0; }
相关文章推荐
- HDU 5171 GTY's birthday gift(矩阵快速幂)
- hdu 5171 GTY's birthday gift(矩阵快速幂)
- HDU 5171 GTY's birthday gift (矩阵快速幂)
- hdu 5171 GTY's birthday gift【矩阵快速幂】【思维】【感受矩阵和数论的神奇】
- HDU 5171 GTY's birthday gift (矩阵快速幂)
- hdu 5171 GTY's birthday gift (矩阵快速幂求类斐波那契数列)
- HDU - 5171 GTY's birthday gift (矩阵快速幂)
- hdu 5171 GTY's birthday gift (BestCoder Round #29)
- hdu 5171-GTY's birthday gift(矩阵快速幂)
- BestCoder Round #29——A--GTY&#39;s math problem(快速幂(对数法))、B--GTY&#39;s birthday gift(矩阵快速幂)
- HDU5171 GTY's birthday gift(矩阵快速幂)
- bc 29 GTY's birthday gift(矩阵快速幂)
- HDU 5171 GTY's birthday gift (矩阵快速幂)
- HDU 5171 GTY's birthday gift(矩阵快速幂模板)
- HDU 5171 GTY's birthday gift(矩阵快速幂)
- HDU 5171 GTY's birthday gift(矩阵快速幂)
- hdu 5171 GTY's birthday gift(矩阵快速幂,斐波那契)
- 【矩阵】HDU 5171 GTY's birthday gift 快速幂
- hdu5171 GTY's birthday gift 矩阵快速幂求斐波那契前n项和,矩阵快速幂模板
- hdu 5171 GTY's birthday gift(数学,矩阵快速幂)