時間限制: 1 sec 記憶體限制: 512 mb
題目描述
小 z 的女朋友送給小 z 乙個 n × n 的矩陣。但是矩陣實在太大了,小 z 的女朋友拿不動,只能帶給他兩個長度為 n 的整數序列 l, t ,分別作為矩陣 f 的第一行和第一列(保證 l1 = t1 ),並且告訴小 z 矩陣可以通過如下方式得到:
fi,j = a · fi,j−1 + b · fi−1,j
現在小 z 猜到了係數 a,b ,他想要計算 fn,n 模 109 + 7 的值
輸入第一行三個整數 n, a, b.
第二行 n 個數表示 l.
第三行 n 個數表示 t
輸出一行乙個整數表示答案
樣例輸入
4 3 5樣例輸出4 1 7 3
4 7 4 8
59716提示
對於前 40% 的資料,n ≤ 5000;
對於另外 20% 的資料,a = 0;
對於 100% 的資料,n, a, v, li, ti ≤ 105
分析:大力推公式。
反正就從給定的公式下手,可以推出$f[n][n]$與$f[1][1\thicksim n]$和$f[1\thicksim n][1]$的關係,當然很顯然需要用到組合。
實際上,$f[n][n]$只由$f[1][1\thicksim n]$和$f[1\thicksim n][1]$中的元素得到,並且從$f[1][1\thicksim n]$和$f[1\thicksim n][1]$的任一元素轉移到$f[n][n]$的轉移方式都是唯一的,這裡推導過程就不再寫了,直接寫出結論:
$f[n][n]=\sum^n_(f[1][i]*a^*b^*c^_)+\sum^n_(f[i][1]*a^*b^*c^_)$
code:
//it is made by holselee on 25th oct 2018
#include#include
#include
#include
#define mod (1000000007)
using
namespace
std;
typedef
long
long
ll;const ll n=2e5+7
;ll n,tot,a,b,x[n],y[n],a[n],b[n],aa[n],bb[n],ans;
inline ll read()
while( ch>='
0' && ch<='9'
)
return flag ? -num : num;
}void
ready()
inline ll getx(ll i)
inline ll gety(ll i)
intmain()
for(ll i=2; i<=n; ++i)
printf(
"%lld\n
",ans);
return0;
}
NOIP模擬 matrix(簡化矩陣)
source noip2016 rzz 1 給出兩個 n n 的矩陣 a b,矩陣每行每列標號 0 n 1 定義這兩個矩陣的乘積 ab 為 現在要在這兩個矩陣上依次進行 q 次修改操作,兩種操作描述如下 在每一次修改操作進行後,輸出矩陣 ab 這兩個矩陣的乘積矩陣 中每個位置元素的權值之和。第一行,...
NOIP模擬題 小象塗色(概率 期望 遞推)
表示數學是個渣。其實只需要推出每個箱子k次以後的顏色為i的概率就能算出期望了。對於區間 l,r 的箱子因為是任意顏色且任意取,所以概率分別為1 c和1 2,那麼整體概率就為這兩個的乘積。根據全概率公式,對於後邊的狀態我們可以累加和就行了。求出概率後期望就是顏色編號 概率。暴力40分。o k n c ...
NOIP模擬題 小象塗色(概率 期望 遞推)
表示數學是個渣。其實只需要推出每個箱子k次以後的顏色為i的概率就能算出期望了。對於區間 l,r 的箱子因為是任意顏色且任意取,所以概率分別為1 c和1 2,那麼整體概率就為這兩個的乘積。根據全概率公式,對於後邊的狀態我們可以累加和就行了。求出概率後期望就是顏色編號 概率。暴力40分。o k n c ...