動態規劃 BZOJ1925 地精部落

2022-05-28 02:51:09 字數 1421 閱讀 1639

time limit: 10 sec  memory limit: 64 mb

submit: 1385  solved: 856

[submit][status][discuss]

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

地精喜歡住在連綿不絕的山脈中。具體地說,一座長度為 n 的山脈 h可分

為從左到右的 n 段,每段有乙個獨一無二的高度 hi,其中hi是1到n 之間的正

整數。

如果一段山脈比所有與它相鄰的山脈都高,則這段山脈是乙個山峰。位於邊

緣的山脈只有一段相鄰的山脈,其他都有兩段(即左邊和右邊)。

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

地精們有乙個共同的愛好——飲酒,酒館可以設立在山谷之中。地精的酒館

不論白天黑夜總是人聲鼎沸,地精美酒的香味可以飄到方圓數里的地方。

地精還是一種非常警覺的生物,他們在每座山峰上都可以設立瞭望台,並輪

流擔當瞭望工作,以確保在第一時間得知外敵的入侵。

地精們希望這n 段山脈每段都可以修建瞭望台或酒館的其中之一,只有滿足

這個條件的整座山脈才可能有地精居住。

現在你希望知道,長度為n 的可能有地精居住的山脈有多少種。兩座山脈a

和b不同當且僅當存在乙個 i,使得 ai≠bi。由於這個數目可能很大,你只對它

除以p的餘數感興趣。

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

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

之後的結果。

4 73

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

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

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

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

第一輪day2

sdfzgzk的blog裡講得太清楚了……

mod sdfzgzk

1 #include2 #include3 #include4 #include5

using

namespace

std;

6int

n,p,ans,pre,now;

7int f[2][4210];8

intmain()

14 pre=0

;15 now=1

;16 f[pre][1]=1;17

for(int i=2;i<=n;i++)

22for(int i=1;i<=n;i++) ans=(ans+f[pre][i])%p;

23 ans=(ans*2)%p;

24 printf("

%d\n

",ans);

25return0;

26 }

BZOJ1925 地精部落

題目描述 輸入格式 僅含一行,兩個正整數 n,p。輸出格式 僅含一行,乙個非負整數,表示你所求的答案對p取餘之後的結果。樣例樣例輸入 4 7樣例輸出 3資料範圍與提示 對於 20 的資料,滿足 n 10 對於 40 的資料,滿足 n 18 對於 70 的資料,滿足 n 550 對於 100 的資料,...

BZOJ 1925 地精部落 DP

description 僅含一行,兩個正整數 n,p。output 僅含一行,乙個非負整數,表示你所求的答案對p取餘 之後的結果。sample input 4 7 sample output 3 hint 對於 20 的資料,滿足 n 10 對於 40 的資料,滿足 n 18 對於 70 的資料,滿...

BZOJ 1925 地精部落 DP

其實不要小看一道地精部落,有比較大的思維量在裡面!我們首先知道 3 個性質 如果有想看證明的,請自動轉到 片下面,因為考慮有些人不想看證明 fi rst fir st 對於每乙個 數字 i 和 i 1 如果這兩個數不是相鄰的,那麼交換兩個數字的對應的方案數是一樣的!比如有 波動序列 32 415 3...