POJ 1631 Bridging signals
2016-08-02 20:37
316 查看
/* 2016年8月2日20:02:31 就是求一个数列的最长上升子序列 nlogn 算法 把最长的上升子序列 存进 sequence[]数组 len[i] 表示在前i个数中 最长的上升子序列的长度 详见代码 */ #include <iostream> #include <algorithm> #include <cstdio> #include <cstring> #include <queue> #include <vector> #include <cmath> #include <stack> #include <map> #include <set> #define pi acos(-1) #define LL long long #define INF 0x3f3f3f3f using namespace std; const int maxn = 1e5 + 5; int a[maxn]; int seq[maxn]; int len[maxn]; int main(void) { // freopen("C:\\Users\\wave\\Desktop\\NULL.exe\\NULL\\in.txt","r", stdin); int T, i, j, n, l, r, mid, ans; cin >> T; while (T--){ cin >> n; for (i = 1; i <= n; i++) scanf("%d", &a[i]); memset(seq, INF, sizeof(seq)); seq[1] = a[1]; len[1] = 1; for (i = 2; i <= n; i++){ l = 1; r = n; while (l <= r){ mid = (l + r)/2; if (a[i] >= seq[mid]) l = mid + 1; else r = mid - 1; } seq[l] = a[i]; len[i] = l; } ans = 0; for (i = 1; i <= n; i++) ans = max(ans, len[i]); cout << ans << endl; } return 0; }
相关文章推荐
- POJ1631——Bridging signals(动态规划,最长上升子序列应用)
- poj 1631 / nlogn 算法 求 最长上升子序列长度
- zoj 1986 || poj 1631 Bridging Signals(最长上升子序列N*logN)
- POJ 1631 最长上升子序列O(nlogn)
- POJ 1631 Bridging signals(最长上升子序列 n*logn && POJ 3903)
- POJ 1631 Bridging signals
- poj1631 Bridging signals
- POJ 1631 Bridging signals
- poj 1631 Bridging signals
- POJ-1631 Bridging signals LIS
- POJ 1631 Bridging signals(LIS+二分)
- POJ - 1631-Bridging signals (LIS二分模板题)
- poj 1631 Bridging signals
- POJ 1631 Bridging signals LIS(最长递增子序列) +nlogn算法+二分查找
- poj1631【最长递增子序列】
- POJ--1631
- poj-1631-Bridging signals-最长上升序列(LIS)
- poj之旅——1631
- POJ 1631 Bridging signals(LIS 二分 快速方法)
- POJ 1631 Bridging signals(LIS的等价表述)