[BZOJ2432][Noi2011]兔農(數論+矩陣乘法)
Address
Solution
顯然是斐波那契數列。
但是遞推式加入了鬼畜的條件:
f[i]=f[i−1]+f[i−2]−[f[i−1]+f[i−2]≡1(modk)]
我們考慮對在模
k 意義下的
f 進行討論。
可以發現,當
i>2 時,如果是滿足
f[i−1]+f[i−2]≡1(modk) 最小的
i ,
那麼
f[i]=0 ,而:
f[i+1]=f[i]+f[i−1]=f[i−1]
同樣地,
f[i+2]=f[i+1]+f[i]=f[i−1] 。
於是接下去在沒有模
k 餘
1 的情況時,有
f[i+x]=f[i−1]×Fib(x) 。
(
Fib(x) 為斐波那契數列第
x 項)
考慮如果存在最小
j>i 滿足
f[j−1]+f[j−2]≡1(modk) ,
那麼有
f[i−1]×Fib(j−i)≡1(modk) 。
用 exgcd 求出
f[i−1] 的逆元
f[i−1]−1 ,找到一個最小的
j>i ,
滿足
Fib(j−i)=f[i−1]−1 ,則
f[j−1]+f[j−2]≡1(modk) 。
如果
f[i−1] 的逆元不存在或者不存在
Fib(j−i)=f[i−1]−1 ,則在
i 之後不會出現模
k 餘
1 的情況。
又由於
Fib 模
k 的餘數的最小正週期為
O(k) ,所以考慮先求出最小正週期
r ,然後預處理出
1 到
r+1 的
Fib 。
然後求出
Fib[1…r+1] 的逆元
inv[1…r+1] 。
定義
Fibx 為:
Fibx(1)=Fibx(2)=x
Fibx(n)=Fibx(n−1)+<
相關推薦
[BZOJ2432][Noi2011]兔農(數論+矩陣乘法)
Address 洛谷P2020 BZOJ2432 LOJ#2442 Solution 顯然是斐波那契數列。 但是遞推式加入了鬼畜的條件: f
[BZOJ2432][Noi2011]兔農 矩陣乘法+exgcd
inline strong 一行 清晰 兩個 第一個 規律 bre 得到 2432: [Noi2011]兔農 Time Limit: 10 Sec Memory Limit: 256 MB Description 農夫棟棟近年收入不景氣,正在他發愁如何能多賺點錢時,
bzoj2432: [Noi2011]兔農 快速冪+數論
不難發現,這個題就是求斐波那契數列改化,由於有一個很強的結論,斐波那契數列取模是一個週期數列,所以我們可以去找迴圈節,然後找到迴圈節後把這第一個迴圈節處理出來。 其實vfk說的很詳細了,注意這裡mod的數不一定是個質數,我們只能用拓展歐幾里得求逆元。。。。 http://v
[NOI2011]兔農 矩陣乘法
Descripition 你知道普通的Fibonacci數列嗎,他的遞推式為: f[i]=f[i-1]+f[i-2] 但這題有點不一樣。 這題給出一個k,如果當前f[i]%k==1,f[i]–。 其他還是照樣遞推,讓你輸出f[n]%mod。 Sa
【BZOJ 2432】 [Noi2011]兔農 矩乘+數論
acc ive war eve 這樣的 -- 註意 可能 保護 這道題的暴力分還是很良心嘛~~~~~ 直接剛的話我發現本蒟蒻只會暴力,矩乘根本寫不出來,然後讓我們找一下規律,我們發現如果我們把這個序列在mod k的意義下擺出,並且在此過程中把值為1的的數減一,我們發現他可以
藍書(演算法競賽進階指南)刷題記錄——POJ3613 Cow Replays(最短路+矩陣乘法)
題目:POJ3613. 題目大意:給出一張圖,然你求出經過N條邊後,S到T的最短路. 這道題一開始覺得挺容易的,用f[i][j]表示從起點到點i經過j的最短路,不斷更新就可以了. 但是突然發現數據巨大根本跑不過去... 然後就開始看書上的題解了... 書上居然要用矩陣乘法,好
[UOJ#340][清華集訓2017]小 Y 和恐怖的奴隸主(期望 DP + 矩陣乘法)
Address 洛谷P4007 UOJ#340 LOJ#2325 Solution 難道 m m
【BZOJ】2432: [Noi2011]兔農 -矩乘&找規律&fibnacci迴圈節
傳送門:bzoj2432 題解 良心題,暴力有 70 p t
【Matrix Power Series】【POJ - 3233 】(等比矩陣+矩陣乘法)
題目: Given a n × n matrix A and a positive integer k, find the sum S = A + A2 +&nb
洛谷2151[SDOI2009]HH去散步(dp+矩陣乘法優化)
一道良好的矩陣乘法優化\(dp\)的題。 首先,一個比較\(naive\)的想法。 我們定義\(dp[i][j]\)表示已經走了\(i\)步,當前在點\(j\)的方案數。 由於題目中限制了不能立即走之前走過來的那個點,所以這個狀態並不能優秀的轉移。 嘗試重新定義\(dp\)狀態。 令\(dp[i][j]
斐波那契數列的第 n 項 mod 1000000007(矩陣乘法)
矩陣快速冪: F(0) = 0 F(1) = 1 F(n) = F(n - 1) + F(n - 2) (n >= 2) (1, 1, 2, 3, 5, 8, 13, 21, 34, 55,
Newcoder 18 F.Course(數論+矩陣快速冪)
Description A r i a
LightOJ 1268 Unlucky Strings(KMP+矩陣乘法+基礎DP)
題意 給出字串的長度 \(n\) ,以及該字串是由哪些小寫字母組成,現給出一個壞串 \(S\) ,求存在多少種不同的字串,使得其子串不含壞串。 \(1 \leq n \leq 10^9\) \(1 \leq |S| \leq 50\) 思路 矩陣快速冪優化 \(\text{dp}\) 是真的常見,在
[BZOJ1297][SCOI2009]迷路(拆點+矩陣乘法)
題目描述 傳送門 題解 由於矩陣的冪只能處理邊權為1的情況,又由於邊權最大隻到9,可以將一個點拆成9個點,分別表示路徑的分段長度。 比如說1->2,5 求矩陣的冪即可。 程式碼
【洛谷4719】 動態dp(樹鏈剖分,dp,矩陣乘法)
前言 其實我只是為了過掉模板而寫的ddp,實際應用被吊著錘 Solution 並不想寫詳細的過程 一句話過程:將子樹中輕兒子的貢獻掛到這個點上面來 詳細版:(引用yyb) 總結一下的話,大致的過程是這樣子的:首先我們考慮我們的轉移方程,發現能夠將其改寫為矩乘的形式,那麼我們首先將轉移改為矩乘
HDU 5950 Recursive sequence(構造矩陣+矩陣乘法)——2016ACM/ICPC亞洲區瀋陽站(重現賽)
傳送門 Recursive sequenceTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 98
HDU 6395 Sequence(數論+矩陣快速冪)
Description 定義序列F1=A,F2=B,Fn=C⋅Fn−2+D⋅Fn−1+⌊Pn⌋F1=A,F2=B,Fn=C⋅Fn−2+D⋅Fn−1+⌊Pn⌋,求FnFn Input 第一行一整數T
BZOJ1898: [Zjoi2005]Swamp 沼澤鱷魚(矩陣乘法)
周期性 bzoj1898 color 余數 align input 題解 個數 ons 1898: [Zjoi2005]Swamp 沼澤鱷魚 題目鏈接:https://www.lydsy.com/JudgeOnline/problem.php?id=1898 Descr
CPC23-4-K. 喵喵的神數 (數論 Lucas定理)
names 什麽 popu ret pac _id memory rac ext 喵喵的神?數 Time Limit: 1 Sec Memory Limit: 128 MB Description 喵喵對組合數比較感興趣,而且對計算組合數很在行