'commit'
This commit is contained in:
33
C++专题课程/动态规划/动态规划-4-最长上升子序列(2).cpp
Normal file
33
C++专题课程/动态规划/动态规划-4-最长上升子序列(2).cpp
Normal file
@@ -0,0 +1,33 @@
|
||||
#include<bits/stdc++.h>
|
||||
/*
|
||||
֪ʶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2
|
||||
|
||||
<EFBFBD>ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲο<EFBFBD><EFBFBD><EFBFBD>
|
||||
https://www.cnblogs.com/aiguona/p/7278141.html
|
||||
*/
|
||||
#define MAXN 40005
|
||||
using namespace std;
|
||||
int arr[MAXN], ans[MAXN], len;
|
||||
|
||||
int main() {
|
||||
int n;
|
||||
int T;
|
||||
cin >> T;
|
||||
while (T--) {
|
||||
cin >> n;
|
||||
for (int i = 1; i <= n; ++i)
|
||||
scanf("%d", &arr[i]);
|
||||
ans[1] = arr[1];
|
||||
len = 1;
|
||||
for (int i = 2; i <= n; ++i) {
|
||||
if (arr[i] > ans[len])
|
||||
ans[++len] = arr[i];
|
||||
else {
|
||||
int pos = lower_bound(ans, ans + len, arr[i]) - ans;
|
||||
ans[pos] = arr[i];
|
||||
}
|
||||
}
|
||||
cout << len << endl;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user