暑期個人賽 第五場 D

2021-06-22 21:39:14 字數 1071 閱讀 5360

時間限制 1000 ms

記憶體限制 65536 kb

已知函式f,f(0)=f(1)=1,對於所有n>=2,f(n)=f(n-1)+f(n-2)+n。給定n,求f(n)。

第一行乙個整數t,表示組數,t<1000。之後t行每行乙個整數n,0<=n<=1e9。

對於每組測試組,輸出一行f(n)%1000000007.

612

3451000000000

148

1629

999999980

賽中提交:null

賽後ac:y

題目大意:

給個類似斐波那契數列的公式,求第n項。

重點是n可以很大,0<=n<=1e9

所以不能靠遞迴來做,

即使是記憶化搜尋,第一次搜尋的開銷都花不起

思路:這道題用的就是矩陣快速冪運算(參見白書p200)

重點是遞推公式的推導,這點比較考數學

這題難在,矩陣遞推式的左右含有非常數項

可以將其當做乙個函式,通過適當增加遞推矩陣的階數來求解

反省:要學會矩陣遞推式的推導

下面是賽後ac**

#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define maxn 500005

using namespace std;

typedef long long ll;

typedef vectorvec;

typedef vectormat;

const int m=1000000007;

mat mul(mat &a,mat &b)

a=mul(a,a);

n>>=1;

}return b;

}int main()

return 0;

}

暑期個人賽 第五場 C

時間限制 1000 ms 記憶體限制 65536 kb 給定乙個字串,求它的乙個重排,使得沒有兩個相鄰字元相同。第一行乙個整數t,表示組數 t 10 接下來的t行,每行乙個字串s,s中只包含小寫字母,s的長度不大於1e5.若符合條件的重排存在,輸出字典序最小的乙個。若不存在,輸出 1。2 aabbc...

暑期個人賽 第五場 E(待A)

時間限制 1000 ms 記憶體限制 65536 kb 鬥地主玩法簡單,娛樂性強,老少皆宜。據傳在萬惡的舊社會,地主橫行鄉里,無惡不做,人們為了發洩對地主的痛恨,常常在一天的勞作之後,一家人關起門來 鬥地主 該遊戲由三人玩一副牌,地主為一方,其餘兩家為另一方,雙方對戰,先出完手中牌的一方勝。機智的學...

暑期個人賽 第八場 D

時間限制 1000 ms 記憶體限制 65536 kb 明光村迎來了一年一度的盛世 解碼錦標賽,有 2 n 次個隊伍從世界各村趕來參與比賽,編號為 1 2 n。賽制為每一輪晉級一半隊伍,按序號大小兩兩比賽,淘汰弱者。一輪結束後,所有的勝者進入下一輪,依舊是按順序兩兩比賽。比如第一輪就是 1 vs 2...