SDOI2010 地精部落

2022-04-09 11:31:32 字數 888 閱讀 1644

sdoi2010 地精部落

僅含一行,兩個正整數 n, p。

僅含一行,乙個非負整數,表示你所求的答案對p取餘 之後的結果。

4 7對於 20%的資料,滿足 n≤10;

對於 40%的資料,滿足 n≤18;

對於 70%的資料,滿足 n≤550;

對於 100%的資料,滿足 3≤n≤4200,p≤109

我覺得這個挺難想的。。。

這是讓求乙個數列,數列呈波浪形(意會一下),然後據dalao講解:[

這種數列有如下性質

1.如果i和i-1不相鄰,那麼可以交換i和i-1,它仍是乙個波動數列,方案數不變。

2.如果將數列中所有數換成n+1-a[i],它仍是乙個波動數列,方案數不變。

這道題空間限制64 mb,所以用滾動陣列優化一下空間。

f[i][j]表示以j作山峰,為序列頭,選1~i的所有數字的波動數列的方案數。因為最後波動數列有對稱性,ans*2。

code

//writer : hsz %wjmzbmr%tourist%hzwer

#include#include#include#include#include#include#include#include#include#include#include#define ll long long

using namespace std;

int n,p,ans;

int f[2][4205];

int main()

ll ans=0;

for(int i=2; i<=n; i++) ans+=f[n&1][i],ans%=p;

ans*=2;

cout<

return 0;

}

SDOI2010 地精部落

求1 n的全排列數目,使得對於 i geq 3 a a 的大小關係與 a a 的大小關係不同 題目還有另外一種格式 求一種全排列,使得這個排列要麼滿足奇數項的高度比相鄰位置都大,要麼滿足偶數項的高度比相鄰位置都大.設 dp 表示用了前 i 個數字,a 1 j 且 a 1 a 2 時的方案數 有乙個神...

SDOI2010 地精部落

這道題是一道 dp 題,思維難度比較大。題意 先定義波形陣列 滿足當 i 全為奇數或偶數時,a i a i 1 且 a i a i 1 求 n 的全排列中有多少個符合波形陣列。我們記錄狀態為 f i j 0 1 i 為剩下 i 個數,j 表示有 j 1 個數小於剛剛選擇的數,當第 3 個下標為 0 ...

SDOI2010 地精部落

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