時間限制 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...