4817 江哥的dp題d

2022-05-03 10:45:21 字數 1127 閱讀 6171

時間限制: 1 s

空間限制: 256000 kb

題目等級 : ** gold

題解已知1~n的排列p的lis(最長上公升子串行)不超過2,求可能的p的個數。答案取模10^9+7。

輸入描述 input description

一行乙個整數n。

輸出描述 output description

輸出一行乙個整數,描述可能的排列p的個數mod1000000007的結果。

樣例輸入 sample input

樣例輸出 sample output

資料範圍及提示 data size & hint

測試點編號              資料範圍

1,2                         n≤10

3,4                         n≤20

5,6,7,8,9,10               n≤1000 

ac**:

/*

解析:

從小到大乙個乙個往數列裡加數字,第一次加1,只有一種加法,第二次加2,可以加在1前或後,2種方法.....

最長上公升子串行要麼是1要麼是2,是1的話只有一種情況,下降序列

f[i][j]表示已經加了前i個數字,最後乙個數字(第i個數)的位置是j,滿足題目要求的方案數,

如果i不是加在第乙個位置是,i+1必須在i的前面,

否則你會形成乙個3的上公升子串行。

所以當j不等於1時,你只能把i+1加到i前面。

如果j==1,可以加到第1,2,3個位置,第四個位置就無法確定了,

所以我們改變策略。

f[i][j]表示前i個數字已經放好且j表示i沒有放在第乙個位置放在**的方案數。

*/#include

using

namespace

std;

const

int n=1e3+10

;const

int mod=1000000007

;int n,f[n][n]=;

intmain()

}printf("%d

",f[n][n]);

return0;

}

江哥的DP題(A)

題目描述 給定乙個長度為n的序列a a1 a2 a3 an 取k個互不相同的元素,使得 1 兩兩元素互不相鄰 2 元素之和最大。輸入描述 第一行輸入兩個正整數n k 第二行輸入n個整數,表示序列a中的元素。輸出描述 輸出乙個整數,表示最大和。樣例輸入 樣例1 7 33 5 7 1 9 10 7 樣例...

CODE VS 江哥的DP題a

原題 先來一波江哥的解題報告殺 這種方法十分的高深莫測,所以我們換乙個容易理解的 f i,j 表示前i個選j個,且第i個必選,那麼就是江哥的轉移方程 p.s 但是不會字首和優化!顯然,這樣的方法只能獲得30分,資料十分的坑,那麼優化如下 f i,j,0 表示前i個裡面選j個且第i個不選 f i,j,...

江哥的DP題(F)

題目描述 有乙個n m的棋盤,每個格仔都有乙個權值,規定路徑必須滿足下列條件 1 從左上角出發,於右下角結束 2 不經過重複的格仔 3 每一步都不會向左走 現詢問路徑經過的格仔的權值和最小能夠為多少。輸入描述 第一行輸入兩個整數n m 接下來n行,每行輸入m個整數,表示每個格仔的權值。輸出描述 輸出...