bzoj1925 Sdoi2010 地精部落

2022-05-31 09:06:11 字數 794 閱讀 5579

大佬們好神啊,考試都切掉了這題,,本來以為t3可做寫完發現不對結果t2還崩了。qwq好鬧心啊。。。

找到了乙個不玄乎的題解至少轉移我看懂了。。clj的都太神了我等蒟蒻不能理解qwq

** 題意:求$1$到$n$個所有排列中有多少種滿足高低交錯。

思路:$f[n][k]$表示n個數,最後乙個為$k$且最後兩個遞增,$g[n][k]$表示$n$個數最後乙個數為$k$且最後兩個遞減。對於$f[n][k]$,若我們將每個數$x$換為$n+1-x$,則就成了$g[n][n+1-k]$,因此有:$f[n][k]=g[n][n+1-k]$。那麼可得:

由於對稱性,我們計算出:

那麼最後的答案就是$ans*2$。

#includetypedef 

long

long

ll;using

namespace

std;

const

int n=10005

;ll f[

2][n],ans;

intn,p;

intmain()

} for(int i=1;i<=n;i++)

ans=(ans+f[n&1][i])%p;

cout

<

}

view code(**我的)

bzoj1925 Sdoi2010 地精部落

題目大意 求全排列中鋸齒狀排列的個數。首先進行打表暴力,會發現第乙個元素作為山峰和第乙個元素作為山谷,這兩種方案數是相等的,因此我們只需求出第乙個元素是山谷的方案數再乘2就是答案。做法一 f i 表示i的全排列,第乙個元素時山谷時,鋸齒狀排列的方案數。那麼考慮在i 1的乙個鋸齒狀排列中插入i這個數,...

bzoj1925 Sdoi2010 地精部落

傳送門 我們設f i j 表示前i個數,第i個數排名是j的方案總數。我們可以強制第1個數是山峰。然後我們可以將整個序列高度取反,得到其他的方案數。然後我們發現這樣做的時間複雜度是o n 3 的 加上字首和優化就是o n 2 了 var f array 0.1,0.5005 of longint n,...

bzoj1925 Sdoi2010 地精部落

傳說很久以前,大地上居住著一種神秘的生物 地精。地精喜歡住在連綿不絕的山脈中。具體地說,一座長度為n的山脈h可分為從左到右的n段,每段有乙個獨一無二的高度hi,其中hi是1到n之間的正整數。如果一段山脈比所有與它相鄰的山脈都高,則這段山脈是乙個山峰。位於邊緣的山脈只有一段相鄰的山脈,其他都有兩段 即...