Noip模擬題 Matrix 遞推,組合數

2022-04-30 09:15:10 字數 1548 閱讀 7280

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