題目描述:
第一行為n,表示n個數第二行n個數
最長不下降子串行的長度
n小於5000for each num < =maxint
31 2 3
3題目分析:輸入乙個長度為n的序列,求最長不下降子串行的長度
方法分析:動態規劃。dp[i]表示以a[i](a[i]為記錄序列的陣列)結尾的最長不下降子串行的長度。若a[j]<=a[i](0=a[j]&&i>j)
#include #define maxn 5005
using namespace std;
long long dp[maxn];
long long a[maxn];
int main()
int ans=0;
for(int i=0;i=a[j])
}if(dp[i]>ans)//注意:dp[n-1]只表示以a[n-1]結尾的最長不下降子串行的長度,但最長不下降子串行不一定是以a[n-1]結尾。
}cout
}
最長不下降子串行
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...
最長不下降子串行
最長不下降子串行解法 第一種就是普通的dp方法 for int i 1 i n i dp 0 1 for int i 1 i n i ans max ans,dp i cout 主要記錄一下n logn的寫法 二分 主要思路 用乙個陣列 b 來記錄最長的子串行 一開始讓b 1 a 1 陣列a為輸入的...
最長不下降子串行
例子 openjudge 4977 怪盜基德的滑翔翼 描述怪盜基德是乙個充滿傳奇色彩的怪盜,專門以珠寶為目標的超級盜竊犯。而他最為突出的地方,就是他每次都能逃脫中村警部的重重圍堵,而這也很大程度上是多虧了他隨身攜帶的便於操作的滑翔翼。有一天,怪盜基德像往常一樣偷走了一顆珍貴的鑽石,不料卻被柯南小朋友...