時間限制 1000 ms
記憶體限制 65536 kb
現有一段橫向長度為n的山脈,其中每段有乙個獨一無二的高度hi(1到n之間的正整數)。現在你想知道對於長度為n的山脈,可能有這樣的山脈多少種。這樣的山脈是:某個位置要麼比兩邊的高度都低,要麼比兩邊的高度都高。兩座山脈 a和 b 不同當且僅當存在乙個 i,使得 ai≠bi。由於這個數目可能很大,你只對它除以 p 的餘數感興趣。
輸入以eof為結束,每組僅含一行,兩個正整數 n, p。 3≤n≤4200,p≤10^9
對於每組資料輸出僅含一行,乙個非負整數,表示你所求的答案對 p 取餘之後的結果。
4 7
3
說明:共有 10 種可能的山脈,它們是:
1324 1423 2143 2314 2413
3142 3241 3412 4132 4231
賽中提交:null
賽後ac:no
思路:這道題最重要的就是要先發現乙個對稱的性質,那就是假設我們已經找到了乙個符合條件的排列
如果我們取他的倒影(比喻),那麼這個倒影也會是另乙個答案
接下來就是dp的事了,具體參考**中的dp遞推關係
下面是ac**
#include#include#include#include#include#includeusing namespace std;
typedef long long ll;
int n;
ll p;
ll dp[4300];
int c[4300][4300];
ll solve()
{ int i,j;
dp[0]=1;
dp[1]=1;
dp[2]=1;
dp[3]=2%p;
dp[4]=5%p;
c[1][1]=1;
c[1][0]=1;
c[2][0]=1;
for(i=2;i
暑期個人賽 第二場 A
時間限制 1000 ms 記憶體限制 65536 kb 丁神要去google上班了,去之前丁神想再做一道水題,但時間不多了,所以他希望題目做起來既水又快。現在一共有 n 道題,編號從1到 n 每道題有兩個值 a 和 b a 為做這道題需要的時間,b 為題目的 水值 丁神希望做b a 最大的那題。輸入...
暑期個人賽 第五場 C
時間限制 1000 ms 記憶體限制 65536 kb 給定乙個字串,求它的乙個重排,使得沒有兩個相鄰字元相同。第一行乙個整數t,表示組數 t 10 接下來的t行,每行乙個字串s,s中只包含小寫字母,s的長度不大於1e5.若符合條件的重排存在,輸出字典序最小的乙個。若不存在,輸出 1。2 aabbc...
暑期個人賽 第三場 A
a.學姐的數碼管 2014新生暑假個人排位賽03 時間限制 1000 ms 記憶體限制 65536 kb 題目描述 學姐的七段數碼管玩的出神入化。現在給你乙個浮點數,你需要把它以七段數碼管的形式輸出出來。乙個 2 n 1 n的矩陣來表示七段數碼管,若下標均從0開始,則以第0列的兩個,第n 1列的兩個...