校內模擬 排列(狀壓DP)(矩陣快速冪)

2021-10-03 02:36:53 字數 1099 閱讀 7408

簡要題意:

統計有多少個不同的 n

nn 排列滿足 ∣pi

−i∣≤

k|p_i-i|\leq k

∣pi​−i

∣≤k

k ≤4

k\leq 4

k≤4

容易發現當前位置選擇哪乙個只會影響到後面 k

kk 個位置。k

kk 本身非常小,狀壓即可。

容易發現轉移和當前是第幾位無關,只和狀態有關,而且是線性,寫成矩陣然後快速冪即可。

**:

#include

#define ll long long

#define re register

#define cs const

using std::cerr;

using std::cout;

cs int mod=

1e9+7;

inline

intmul

(int a,

int b)

inline

void

inc(

int&a,

int b)

int nn;

struct mat

int*

operator

(int o)

cs int

*operator

(int o)cs};

mat operator

*(cs mat &a,cs mat &b)

int n,k;

mat ans,tr;

void

main()

for(

int re i=

1;i<=k+k;

++i)if(

~s&(

1<)tr[s]

[(s|(1

<)>>1]

=1;}

while

(n)cout<[(

1<]<<

"\n";}

}inline

void

file()

signed

main()

校內模擬 記憶(狀壓DP)

考場想到了正解,然後被卡快取記憶體,gg 乙個顯然的轉化就是設e ie i ei 表示朋友選擇第i ii個串的時候的期望操作次數。則答案就是所有e ie i ei 的平均值。首先考慮乙個o n l2l o nl2 l o nl2l 的暴力,對於每個串,列舉所有其他串看有多少個位置相同,則我們能夠知道...

2018 10 17 校內模擬 管道(狀壓DP)

簡直有毒,出題人還一本正經的說 我覺得沒有去年noi pd2t 2noipd2t2 noipd2 t2難啊 我只想說,去年d2t 2d2t2 d2t2 的轉移方程那裡有這麼鬼畜。首先利用兩個陣列f,d pf textdp f,dp 來進行狀態轉移。定義如下fi,staf fi,sta 表示不向點i ...

花園 洛谷 1357 狀壓DP 矩陣虧快速冪

題目描述 小l有一座環形花園,沿花園的順時針方向,他把各個花圃編號為1 n 2 n 10 15 他的環形花園每天都會換乙個新花樣,但他的花園都不外乎乙個規則,任意相鄰m 2 m 5,m n 個花圃中有不超過k 1 k 例如,n 10,m 5,k 3。則 ccpcppppcc 是一種不符合規則的花圃 ...