題目:
(公升級版)
題意:
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 第二步是建...