Jzoj3497 隱藏指令

2022-05-09 17:52:24 字數 1176 閱讀 2295

題意:求在n維空間裡,長度為2m且起點和終點重合的簡單路徑(只能在一維中走)數量

顯然,我們在計算方案時,每次必然加入在同一維度的,方向相反的行動

那麼我們令f[i][j][k]表示目前在處理第i維,已經走了2*j步,其中有2*k步在第i維上

那麼顯然,f[i+1][j][0]+=f[i][j][k] 這等於是停止當前這一維的處理,開始下一維

那麼另一種轉移是這樣滴

f[i][j+1][k+1]+=f[i][j][k]*c(k+1<<1,k+1)/c(k<<1,k)*c(j+1<<1,k+1<<1)/c(j<<1,k<<1)

表示的是,在這一維加入一對相反的行動,那麼,顯然,在這一維裡面,正反都是一樣的

所以對於同一維中,若有2k步,

我們有c(2k,k)排序方案,這點很顯然因為這相當於在長度為2k的空格中插入k個0和k個1,那麼方案自然是c(2k,k),那麼我們先除去上一次的方案再乘上我們新加入的方案

而對於不同維度,互相不影響,所以相當於是把2k個物件放入長度為2j的陣列中,那麼這樣的方案就有c(2j,2k)

所以f[i][j+1][k+1]+=f[i][j][k]*c(k+1<<1,k+1)/c(k<<1,k)*c(j+1<<1,k+1<<1)/c(j<<1,k<<1),

先除去當前狀態的影響再加入新的元素重新計算

而組合數乘除可以用逆元預處理,最後答案為σf[d][n][k] (0<=k<=n)

#pragma gcc opitmize("o3")

#pragma g++ opitmize("o3")

#include#include#include#define l long long

#define m 1000000007

using namespace std;

inline l pow(l x,int k)

inline void ad(l& x,l y)

l js[510],inv[510],a=0,f[210][210][210];

inline l c(int n,int m)

inline l gc(int n,int m)

int main()

for(int k=0;k<=n;++k) ad(a,f[d][n][k]);

printf("%lld\n",a);

}

Jzoj3497 隱藏指令

題意 求在n維空間裡,長度為2m且起點和終點重合的簡單路徑 只能在一維中走 數量 顯然,我們在計算方案時,每次必然加入在同一維度的,方向相反的行動 那麼我們令f i j k 表示目前在處理第i維,已經走了2 j步,其中有2 k步在第i維上 那麼顯然,f i 1 j 0 f i j k 這等於是停止當...

iPhone隱藏指令

3001 12345 就可以將訊號點切換為準確的數字顯示 輸入 06 即可顯示出真實的imei,們可以將顯示出來的這個imei和 設定 通用 關於本機 裡面的imei進行對比,以確認該號碼是否被修改過。輸入 21 再撥號 這個指令可以查詢iphone手機所有來電轉移的設定情況,包括語音和簡訊等功能。...

freemarker的list指令中隱藏的變數

freemarker的list指令遍歷乙個list集合中的每乙個元素,例如 list userlists as user 其實list指令還隱含了兩個變數,1 item index 該變數將返回元素在集合裡的索引值,從0開始計數 2 item has next 該變數是boolean型,false表...