[BZOJ1925]地精部落
地精部落
題目描述
傳說很久以前,大地上居住著一種神秘的生物:地精。地精喜歡住在連綿不絕的山脈中。具體地說,一座長度為N的山脈H可分為從左到右的N段,每段有一個獨一無二的高度Hi,其中Hi是1到N之間的正整數。如果一段山脈比所有與它相鄰的山脈都高,則這段山脈是一個山峰。位于邊緣的山脈只有一段相鄰的山脈,其他都有兩段(即左邊和右邊)。 類似地,如果一段山脈比所有它相鄰的山脈都低,則這段山脈是一個山谷。地精們有一個共同的愛好——飲酒,酒館可以設立在山谷之中。地精的酒館不論白天黑夜總是人聲鼎沸,地精美酒的香味可以飄到方圓數里的地方。地精還是一種非常警覺的生物,他們在每座山峰上都可以設立瞭望臺,并輪流擔當瞭望工作,以確保在第一時間得知外敵的入侵。地精們希望這N段山脈每段都可以修建瞭望臺或酒館的其中之一,只有滿足這個條件的整座山脈才可能有地精居住。現在你希望知道,長度為N的可能有地精居住的山脈有多少種。兩座山脈A和B不同當且僅當存在一個i,使得Ai≠Bi。由于這個數目可能很大,你只對它除以P的余數感興趣。
輸入格式
僅含一行,兩個正整數 N,P。
輸出格式
僅含一行,一個非負整數,表示你所求的答案對P取余之后的結果。
樣例
樣例輸入
4 7樣例輸出
3數據范圍與提示
對于 20%的數據,滿足 N≤10;
對于 40%的數據,滿足 N≤18;
對于 70%的數據,滿足 N≤550;
對于 100%的數據,滿足 3≤N≤4200,P≤10^99??
反正信奧題把誰都能搞進來
這是我做數論這幾天碰到的第一個代碼這么短的題,那就靠腦子了
因為最近學組合數,我就去往組合數上靠去了,誰知道這是個考數列的DP題,我數學老師也沒給我講過擺動數列啊,那就先看看樣例里的說明,你看上下兩行是不是長得有點像,你吧上面那一行的倒過來你發現了什么?都一樣,這提示我們可以算出一半來乘二就可以了
一些性質
1.對于一個擺動數列,如果有兩個數ai和aj,|ai-aj|=1并且ai和aj在數列中不相鄰
我下課了,明天接著寫吧
轉載于:https://www.cnblogs.com/hzjuruo/p/11138215.html
總結
以上是生活随笔為你收集整理的[BZOJ1925]地精部落的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python 3 教程二:文件,目录和路
- 下一篇: 性能跟踪_ORACLE