hdu6470 Count 矩阵快速幂】的更多相关文章

hdu6470 Count #include <bits/stdc++.h> using namespace std; typedef long long ll; , mod = ; struct MAT { ll a[maxn][maxn]; MAT(){ memset(a,,sizeof(a)); } MAT operator*(MAT p) { MAT res; ; i < maxn; i++) ; j < maxn; j++) ; k < maxn; k++) res…
Discription DarrellDarrellDarrell 在思考一道计算题. 给你一个尺寸为 1×N1 × N1×N 的长条,你可以在上面切很多刀,要求竖直地切并且且完后每块的长度都是整数. 在这种限制下其实只有 N−1N − 1N−1 个位置可以切. 对于一种切的方案,假如切完后每块的宽度分别是:w1,w2,w3,...,wk(∑wi=N)w_1, w_2, w_3, ..., w_k(\sum w_i = N)w1​,w2​,w3​,...,wk​(∑wi​=N),那么该种方案对应…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6470 题意:求,直接矩阵快速幂得f(n)即可 构造矩阵如下: n^3是肯定得变换的,用二项式展开来一点点配吧 我们会发现中间6*6的矩阵是个常数矩阵,则可以化为A=B^(N-2)*C(n-2次幂是因为我们求解是从N=3开始的),根据矩阵快速幂算出B^(N-2)次幂即可以了 矩阵快速幂的时间复杂度是logn 注意:我们中间构造的矩阵必须是一个方阵,矩阵快速幂的难点就在于构建中间的方阵 比如矩阵A,B,…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6155 题意: 题解来自:http://www.cnblogs.com/iRedBean/p/7398272.html 先考虑dp求01串的不同子序列的个数. dp[i][j]表示用前i个字符组成的以j为结尾的01串个数. 如果第i个字符为0,则dp[i][0] = dp[i-1][1] + dp[i-1][0] + 1,dp[i][1] = dp[i-1][1] 如果第i个字符为1,则dp[i][1…
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6470 Count Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 301    Accepted Submission(s): 127 Problem Description Farmer John有n头奶牛.某天奶牛想要数一数有多少头奶牛…
Count Numbers 时间限制: 8 Sec  内存限制: 128 MB提交: 43  解决: 19[提交] [状态] [讨论版] [命题人:admin] 题目描述 Now Alice wants to sum up all integers whose digit sum is exactly ab .However we all know the number of this kind of integers are unlimited. So she decides to sum u…
Count Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 1187    Accepted Submission(s): 433 Problem Description Farmer John有n头奶牛.某天奶牛想要数一数有多少头奶牛,以一种特殊的方式:第一头奶牛为1号,第二头奶牛为2号,第三头奶牛之后,假如当前奶牛是第n头,那么他的编…
http://acm.hdu.edu.cn/showproblem.php?pid=6470 题意:f[n] = f[n-1] + f[n-2]*2 + n^3; f[1] =1 ; f[2] = 2 ; 求f[n; 分析:一眼相望可知为矩阵快速幂 , 在此在此加深了矩阵快速幂的用法: 下面是推导过程 所以最终F[n]=A^(n-2)* res; 应为相乘的矩阵有F[n-2] , 所以相乘到(n-2) res=(a2 a1 27 9 3 1) #include<stdio.h> #includ…
传送门 两个序列相同当且仅当它们的笛卡尔树相同,于是变成笛卡尔树计数. 然后注意到每一个点的权值一定会比其左儿子的权值大,所以笛卡尔树上还不能够存在一条从根到某个节点的路径满足向左走的次数\(> m-1\).不难证明只需这个条件以及\(n \geq m\)的条件满足,一定存在一种权值分配方案使得\(1\)到\(m\)都被分配到. 不妨设\(F_i(x)\)表示向左走的次数小于\(i\)的笛卡尔树数量的生成函数,即\(f_{i,j}\)表示\(j\)个点.向左走的次数小于\(i\)的笛卡尔树的数量…
题意:求Fibonacci的第 n 项. 析:矩阵快速幂,如果不懂请看http://www.cnblogs.com/dwtfukgv/articles/5595078.html 是不是很好懂呢. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio> #include <string> #include <cstdlib> #include <…