kuangbin專題十四 HDU4990 構造矩陣

2021-08-14 16:48:27 字數 881 閱讀 5904

題意:

給你這段**,然後輸入n和mod,讓你算出結果。

題解:

n很大,一看就知道要優化,因為這個是矩陣專題。。所以我就想矩陣了。。orz真沒骨氣,還有就是從網上學到了偷懶的工具:

這玩意能搜到例子和一些公式,個人感覺,還是不要太依賴為好,要靠自己推,畢竟是acmer….

好了,回歸正題怎麼知道是要用矩陣去做,怎麼推導呢?首先用得到的公式f(n)=f(n-1)+2f(n-2)+1來推出矩陣關係的式子:因為有三個變數(1也算),那麼肯定是三階的矩陣了,就要弄出三條關係式了。接著就是推演了,f(n)=f(n-1)+2f(n-2)+1

f(n-1)=f(n-1)+0*f(n-2)+0

1=0*f(n-1)+0*f(n-2)+1

好,接下來才是重頭戲:

好了,這就是我的構造過程了。

#include

#include

#define ll long long int

ll mod;

struct node

};node cla(node a,node b)//這裡可以 node cla(node a,node b,int l) 第三個l表示的是你矩陣的大小,但是這裡求斐波那契,只需要2就好了,就不用寫了

return c;

}ll pow(ll k)

printf("%lld\n",(2

*c.m[0][0]+1

*c.m[0][1]+1

*c.m[0][2])%mod);

} int main()

}

kuangbin專題十二 HDU1029 水題

題意 n n為奇數 個數,存在乙個數出現的次數大於 n 1 2次,求這個特殊的數。題解 因為次數大於 n 1 2那麼排序完之後輸出a n 1 2 肯定就會出現這個特殊的數的。然後因為這是個dp專題,我就想,這題是怎麼dp的,後來一看,發現怎麼說呢,不是轉移方程,而是乙個大概是或者說是類似於dp的思路...

kuangbin專題一 簡單搜尋 HDU1495

給一瓶可樂和兩個杯子,容量分別為a,b,c,求平分可樂的最小步數。常規的bfs題,每種狀態可以有6種操作,用map記錄每種狀態及相應的步數。記得每次重新讀資料要初始化ans和map!ac include include include include include include includeu...

kuangbin帶你飛專題

kuangbin帶你飛 專題一 簡單搜尋 kuangbin帶你飛 專題二 搜尋高階 kuangbin帶你飛 專題三 dancing links kuangbin帶你飛 專題四 最短路練習 kuangbin帶你飛 專題五 並查集 kuangbin帶你飛 專題六 最小生成樹 kuangbin帶你飛 專題...