題意:
給你這段**,然後輸入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帶你飛 專題...