description
給你一串整數,從左到右按順序挑出一些數字,構成嚴格下降序列,問最長能構成多長
如6個數4 5 2 4 2 2, 那麼最長可以挑出5 4 2,長度為3
input
首先輸出t(t<=50),表示有t組資料。
每組資料:
首先輸入n表示有幾個數(1 後面一行跟著n個整數
output
對於每個樣例輸出乙個數字,表示最長的長度
sample input
164 5 2 4 2 2sample output
這題可以當模板用,用了單調佇列的思想。
模板1:嚴格下降子串行
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
int a[10006],dp[10006];
int find(int l,int r,int x)
{ int mid;
while(l<=r)
{ mid=(l+r)/2;
if(dp[mid]>x)l=mid+1;
else if(dp[mid]模板2:不上公升子串行(非嚴格)#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
int a[10006],dp[10006];
int find(int l,int r,int x)
{ int mid;
while(l<=r)
{ mid=(l+r)/2;
if(dp[mid]>=x)l=mid+1;
else if(dp[mid]
最長下降序列 中高階
description 給你一串整數,從左到右按順序挑出一些數字,構成嚴格下降序列,問最長能構成多長 如6個數4 5 2 4 2 2,那麼最長可以挑出5 4 2,長度為3 input 首先輸出t t 50 表示有t組資料。每組資料 首先輸入n表示有幾個數 1output 對於每個樣例輸出乙個數字,表...
最長不下降子串行
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...
求最長不下降序列
求最長不下降序列 time limit 1000ms memory limit 65536k total submit 398 accepted 171 description 設有n n 1000 個不相同的整數 小於32767 組成的數列,記為 a1,a2,an,其中任意兩個數不相同。例如 3,...