矩陣快速冪的應用 郭姐散步

2021-07-11 10:48:09 字數 1221 閱讀 5296

題目:

(公升級版)

題意:

gj散步,最開始在座標系的中心(0,0),他可以向上,向左,向右但是不能向下,給出n表示gj走的步數,對於小資料(第一題)n <= 1000000,對於大資料(第二題)n <= 1e18,求公有多少種走的方法?

題解:常見的一種矩陣快速冪的應用。

由分析可知,每一步的下一步可以有兩種或者三種選擇,有兩種選擇的步其下一步的選擇數為2+3,有三種選擇的步其下一步為2+2+3.

所以設a

n為2的個數,bn

為3的個數,ans即為2*a

n+3*bn又有

接下來就可以用矩陣快速冪來求解。

**:

#include#include#include#includeusing namespace std;

const int n=2;

const int mod=1e9+7;

typedef long long ll;

struct matrix

; matrix unit()

return c;

}int main()

} return 0;

}

如果設fn為總的方案數,可以求出遞推式

(怎麼出來的我也忘了qaq),則也可以有

BZOJ 1875 HH去散步 矩陣快速冪

題意 給定一張無向圖,每條路的長度都是1,沒有自環,可能有重邊,給定起點與終點,求從起點走t步到達終點的方案數。每一步走的時候要求不能走上一條剛剛走的路。解析 顯然需要搞出個矩陣之後矩乘。然而這題的要求就很煩,要不然就是sb題了2333.但是我們可以換乙個想法來做。題目要求不走上一條來的邊,況且邊的...

矩陣 快速冪及應用

一 快速冪部分 求a b,如下。include using namespace std int quickpow int x,int y return ans int main 其中 位移運算,就是把y轉換為 二進位制數 整體向右移一位,高位補零,最低位消失,通常右移一位就等價於y除以2再賦給b。可...

三 矩陣快速冪應用

這個同學寫的太好了,於是我又厚顏無恥的借鑑了 例一 poj 3070 題目 斐波那契數列f n 給乙個n,求f n 10000,n 1e9 這題是可以用fibo的迴圈節去做的,不過這裡不講,反正是水題 矩陣快速冪是用來求解遞推式的,所以第一步先要列出遞推式 f n f n 1 f n 2 第二步是建...