graph  Accepts: 9 Submissions: 61  Time Limit: 8000/4000 MS (Java/Others)  Memory Limit: 65536/65536 K (Java/Others) 问题描述 在一个NN个点(标号11~nn),MM条边的有向图上,一开始我在点uu,每一步我会在当前点的出边中等概率的选一条走过去,求走了恰好KK步后走到每个点的概率. 输入描述 第一行两个正整数N,MN,M,表示点数和边数. 接下来MM行,每行两个正整数X,YX,Y…
Sequence  Accepts: 59  Submissions: 650  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: 65536/65536 K (Java/Others) Problem Description \ \ \ \    Holion August will eat every thing he has found. \ \ \ \    Now there are many foods,but he does…
链接:http://acm.hdu.edu.cn/showproblem.php?pid=4686 题意: 其中a0 = A0ai = ai-1*AX+AYb0 = B0bi = bi-1*BX+BY 最后的结果mod 1,000,000,007 n<=10^18. 分析:ai*bi=(ai-1 *ax+ay)*(bi-1 *bx+by) =(ai-1 * bi-1 *ax*bx)+(ai-1 *ax*by)+(bi-1 *bx*ay)+(ay*by) 设p=ax*bx,  q=ax*by, …
http://acm.hdu.edu.cn/showproblem.php?pid=4686 当看到n为小于64位整数的数字时,就应该有个感觉,acm范畴内这应该是道矩阵快速幂 Ai,Bi的递推式题目已经给出, Ai*Bi=Ax*Bx*(Ai-1*Bi-1)+Ax*By*Ai-1+Bx*Ay*Bi-1+Ay*By AoD(n)=AoD(n-1)+AiBi 构造向量I{AoD(i-1),Ai*Bi,Ai,Bi,1} 初始向量为I0={0,A0*B0,A0,B0,1} 构造矩阵A{ 1,0,0,0,…
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=4990 题意 初始的ans = 0 给出 n, m for i in 1 -> n 如果 i 为奇数 ans = (ans * 2 + 1) % m 反之 ans = ans * 2 % m 思路 如果我们只计算 偶数项 那么递推公式就是 ans[n] = 4 * ans[n - 2] + 2 如果 n 是偶数 那么刚好 就按这个公式推 第 n / 2 项 如果 n 是奇数 那么就是 第 [ n /…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1005 题意: 数列{f(n)}: f(1) = 1, f(2) = 1, f(n) = ( A*f(n-1) + B*f(n-2) ) MOD 7 给定A.B.n,求f(n). (1<=n<=100,000,000) 题解: 大水题~ (*/ω\*) 矩阵快速幂. 初始矩阵start: 特殊矩阵special: 所求矩阵ans: ans = start * special^(n-1) ans的第一…
链接:传送门 题意:一个队列是由字母 f 和 m 组成的,队列长度为 L,那么这个队列的排列数为 2^L 现在定义一个E-queue,即队列排列中是不含有 fmf or fff ,然后问长度为L的E-queue的个数 % M 思路: 这道题的关键是找到递推关系!递推关系为:Fn = Fn-1 + Fn-3 + Fn-4,与HDU1575简直一模一样,然后直接矩阵快速幂就OK了 HDU 1575 题解链接 递推关系式不好找,我们可以将字母 f m 分别看为 1 0,给出一个长度L,排列数是为 2^…
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头,那么他的编…
今天做的第二道矩阵快速幂题,因为是初次接触,各种奇葩错误整整调试了一下午.废话不说,入正题.该题应该属于矩阵快速幂的裸题了吧,知道快速幂原理(二进制迭代法,非递归版)后,剩下的只是处理矩阵乘法的功夫了,我直接用个结构体来表示矩阵,确实能省去不少功夫(这里一定要注意用单位矩阵来初次相乘,但不要把它放进构造函数中,我就是在这里卡了好久).下面附上代码: #include<cstdio> #include<cstring> ; struct matrix{ ][], n; matrix(…
题目大意:就是给出a,b,n,m:让你求s(n); 解题思路:因为n很可能很大,所以一步一步的乘肯定会超时,我建议看代码之前,先看一下快速幂和矩阵快速幂,这样看起来就比较容易,这里我直接贴别人的推导,应该很容易懂. 看到这里你应该明白了大概吧!好吧现在继续看我的代码吧!! AC代码: #include<stdio.h> long long c[2][2],d[2]; int main() { long long a,b,n,m,x,y,p,q; while(scanf("%I64d%…