P2467 SDOI2010 地精部落

2022-03-04 05:33:44 字數 935 閱讀 9017

傳說很久以前,大地上居住著一種神秘的生物:地精。

地精喜歡住在連綿不絕的山脈中。具體地說,一座長度為n的山脈h可分為從左到右的n段,每段有乙個獨一無二的高度hi,其中hi是1到n之間的正整數。

如果一段山脈比所有與它相鄰的山脈都高,則這段山脈是乙個山峰。位於邊緣的山脈只有一段相鄰的山脈,其他都有兩段(即左邊和右邊)。

類似地,如果一段山脈比所有它相鄰的山脈都低,則這段山脈是乙個山谷。

地精們有乙個共同的愛好——飲酒,酒館可以設立在山谷之中。地精的酒館不論白天黑夜總是人聲鼎沸,地精美酒的香味可以飄到方圓數里的地方。

地精還是一種非常警覺的生物,他們在每座山峰上都可以設立瞭望台,並輪流擔當瞭望工作,以確保在第一時間得知外敵的入侵。

地精們希望這n段山脈每段都可以修建瞭望台或酒館的其中之一,只有滿足這個條件的整座山脈才可能有地精居住。

現在你希望知道,長度為n的可能有地精居住的山脈有多少種。兩座山脈a和b不同當且僅當存在乙個i,使得ai≠bi。由於這個數目可能很大,你只對它除以p的餘數感興趣。

輸入格式:

輸入檔案goblin.in僅含一行,兩個正整數n, p。

輸出格式:

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

輸入樣例#1: 複製

4 7

輸出樣例#1: 複製

3

波動數列

#includeusing

namespace

std;

#define maxn 5005typedef

long

long

ll;#define inf 0x3fffffff

int dp[2

][maxn];

int ans=0

;int

n,m;

intmain()

P2467 SDOI2010 地精部落 dp

求長度為n nn的波動序列的個數。我們先考慮第乙個是上公升的,然後乘2即可。設f i,jf fi,j 表示填1 i 1 sim i 1 i個,最前面的是j jj的個數。然後我們只要是1 i j 1 1 sim i j 1 1 i j 1,當然可以填i ii那麼一定可以填i 1 i 1i 1,所以有遞...

luogu2467 SDOI2010 地精部落

求在 1,n 的排列中是波動序列的數量。當我們對波動序列 a 進行以下操作時,得到的新序列仍然是個波動序列 若 a i a j 1且 j i 1 將 a i,a j 交換。將波動序列上下翻轉 也就是 forall a i,a i rightarrow n a i 1 將波動序列左右翻轉 也就是 fo...

SDOI2010 地精部落

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