題目大意:求對於所有$n$的拆分$a_i$,使得$\sum_^ma_i=n$,$\prod_^mf_$之和。其中$f_i$為斐波那契數列的第$i$項。
資料範圍:$n\leq 10^6$
首先不要被這個【國家集訓隊】給嚇到了,其實很簡單的。
首先考慮打表,。。。。(逃
顯然一眼就能想到卷積,設$f(x)$為$f$的生成函式。則
$$f(x)=\frac$$
$$ans=\sum_^nf^i(x)[x^n]$$
$$=\frac}[x^n]$$
$$=\frac[x^n]$$
根據直覺,這個多項式也是乙個常係數齊次線性遞推數列的生成函式,設為$g(x)$則
$$g(x)=2xg(x)+x^2g(x)+x$$
所以$g_=2*g_n+g_$
然後連矩陣乘法都不用就直接a了。
1 #include2view code#define rint register int
3using
namespace
std;
4const
int mod = 1e9 + 7;5
intn, f1, f2, f3;
6int
main()
10for(rint i = 2;i <= n;i ++)
14 printf("%d"
, f3);
15 }
Luogu1501 國家集訓隊 Tree II
題目描述 一棵n個點的樹,每個點的初始權值為1。對於這棵樹有q個操作,每個操作為以下四種操作之一 u v c 將u到v的路徑上的點的權值都加上自然數c u1 v1 u2 v2 將樹中原有的邊 u1,v1 刪除,加入一條新邊 u2,v2 保證操作完之後仍然是一棵樹 u v c 將u到v的路徑上的點的權...
Luogu 1975 國家集訓隊 排隊
luogu 1975 題意 給出乙個長度為n的數列以及m個交換兩個數的操作,問每次操作後逆序對數量 時間,下標和數的大小三維偏序,把交換操作看成是減去兩個數再加上兩個數,套板子就好了 發現這種計數型別的cdq一般有兩種寫法 感覺應該都差不多,但有些題目用兩種方式寫也有一些優劣之分,比如這道題,用第二...
Luogu 2839 國家集訓隊 middle
感覺這題挺好的。首先對於中位數最大有乙個很經典的處理方法就是二分,每次二分乙個陣列中的下標 mid 然後我們把 mid 代回到原來的陣列中檢查,如果乙個數 a geq mid 那麼就把 s 記為 1 否則把 s 記為 1 然後對 s 跑一遍字首和,觀察是否有乙個區間的和不小於 0 讀清楚題意之後發現...