HDU6197 最長有序子串行 DP 二分查詢

2021-08-08 03:26:49 字數 1067 閱讀 3571

利用dp+二分查詢依次找出最長遞增子串行和最長遞減子串行,取二者中較大值。

如果結果 ans>=n-k 那麼這樣的序列滿足條件是乙個魔法陣列。

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

#define int 0x7fffffff

int main()

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

//發現遞增資料進棧

else

//while

a[low]=arr[i];

}//else

if(arr[i]>a1[top2])

//發現遞增資料進棧

else

//while

a1[low]=arr[i];

}//else

}//for

int ans = top1 > top2 ? top1 : top2;

if(ans >= n-k) printf("a is a magic array.\n");

else printf("a is not a magic array.\n");

}//while

//system("pause");

return 0;

}

//其它模板

#include#includeconst int maxn=200001;

int a[maxn];

int d[maxn];

int main()

}printf("%d\n",len);

return 0;

}

int stack[10010];  

int lis(int arr,int n)

stack[low] = arr[i];

} }

return top;

}

hdu6197 最長上公升子串行(LIS)長度

給你t組樣例,每組樣例給出n 1e5 k n 再給你n個數組成的序列。問你能不能通過減去該序列中x k 個數,使該序列變成乙個非遞增或非遞減序列。可以輸出a is a magic array.不行就輸出a is not a magic array.這題可以轉化成最長上公升子串行的題。我們正著做一遍最...

最長有序子串行

acm模版 遞增 預設 遞減 非遞增 非遞減 1 2 3 const int maxn 1001 int a maxn f maxn d maxn d i 用於記錄 a 0.i 以 a i 結尾的最大長度 int bsearch const int f,int size,const int a el...

D 最長上公升子串行

乙個數的序列 bi,當 b1 b2 bs的時候,我們稱這個序列是上公升的。對於給定的乙個序列 a1,a2,an 我們可以得到一些上公升的子串行 ai1,ai2,aik 這裡1 i1 i2 ik n。比如,對於序列 1,7,3,5,9,4,8 有它的一些上公升子串行,如 1,7 3,4,8 等等。這些...