最長下降子串行 最長的方案數

2021-07-16 14:51:57 字數 832 閱讀 2948

題意:求最長下降子串行的長度,和該長度的最長下降子串行有多少個

思路:o(n^2)求最長下降子串行,統計個數時兩個狀態轉移方程一是統計個數的通用方程:if(a[i] < a[j] && dp[i] == dp[j + 1])cnt[i] += cnt[j]

另乙個是如果當前點和之前的點是相等的,且dp[i] == dp[j]那麼當前點的所有情況中一定是包括了之前點的方案數,大於等於之前的點。固清空之前點的情況,保留當前點的結果

**:

#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;

int a[5005];

int dp[5005];

int cnt[5005];

int main()

for(int i = 0; i a[i])

}if(dp[i] == 1)

cnt[i] = 1;

}int maxn = 0;

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

printf("%d ",maxn);

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

if(a[j] == a[i] &&dp[i] == dp[j])}}

int ans = 0;

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

printf("%d\n",ans);

return 0;

}

POJ 1952 最長下降子串行 方案數

求最長下降子串行 簡單 就是求方案數比較麻煩點 看了別人的解題報考才懂 也對最長 子串行的理解更深一步 include include includeusing namespace std const int maxn 5005 int n int price maxn len maxn count...

最長上公升子串行,最長不下降子串行

最長上公升子串行 include includeusing namespace std const int n 23333 12 int dp n a n int n int binarysearch int k,int len else if k dp mid else mid l r 1 ret...

最長不下降子串行

a1 t0 an a an 1 2 b an c d n 1 求該序列最長不下降子串行長度 n不是很大顯然可以暴力。n很大呢?那就不斷減迴圈節長度直至減到乙個閾值內,再暴力。正確性顯然,只要閾值不要設太小。include include include define fo i,a,b for i a...