Điểm:
1400 (p)
Thời gian:
1.0s
Bộ nhớ:
512M
Input:
bàn phím
Output:
màn hình
Cho một dãy số nguyên gồm N phần tử \(A[1], A[2], ... A[N]\).
Biết rằng dãy con tăng đơn điệu là 1 dãy \(A[i_1],... A[i_k]\) thỏa mãn
\(i_1 < i_2 < ... < i_k\) và \(A[i_1] < A[i_2] < .. < A[i_k]\).
Yêu cầu:
- Hãy cho biết dãy con tăng đơn điệu dài nhất của dãy này có bao nhiêu phần tử.
Dữ liệu vào
- Dòng đầu tiên chứa số nguyên dương \(N\) (\(1 ≤ N ≤ 1000\))
- Dòng thứ 2 ghi N số nguyên \(A[1], A[2], .. A[N] (1 ≤ A[i] ≤ 1000000)\).
Kết quả
- Ghi ra độ dài của dãy con tăng đơn điệu dài nhất.
Test 1
Input
6
1 2 5 4 6 2
Output
4
Nguồn: vn.spoj
Bình luận
sử dụng quy hoạch động
code đã AC
include<bits/stdc++.h>
using namespace std;
int n,a[1000005],t;
int main(){
cin>>n;
vector<int>l(n,1);
for(int i=0;i<n;i++) cin>>a[i];
for(int i=0;i<n;i++)
for(int j=0;j<i;j++){ if(a[i]>a[j])
l[i]=max(l[i],l[j]+1);
}
cout<<*max_element(l.begin(),l.end())<<'\n';
}
include<bits/stdc++.h>
define N 100002
using namespace std;
int n,a[N],f[N],g[N],c[N],d[N];
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
c[0]=0;
int m=0;
for(int i=1;i<=n;i++)
{
int x=lower_bound(c,c+m+1,a[i])-c-1;
f[i]=x+1;
if(x==m)
{
m++;
c[m]=a[i];
}
else c[x+1]=min(c[x+1],a[i]);
}
int dmax=0;
for(int i=1;i<=n;i++)
{
dmax=max(dmax,f[i]);
}
cout<<dmax;
return 0;
}
code nè:
include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> ii;
typedef unsigned long long ull;
define X first
define Y second
define pb push_back
define mp make_pair
define ep emplace_back
define EL printf("\n")
define sz(A) (int) A.size()
define FOR(i,l,r) for (int i=l;i<=r;i++)
define FOD(i,r,l) for (int i=r;i>=l;i--)
define fillchar(a,x) memset(a, x, sizeof (a))
define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
const int N = 1005;
int n, a[N], F[N];
int main() {
// freopen("INP.TXT", "r", stdin);
// freopen("OUT.TXT", "w", stdout);
}
c++
bài này là quy hoạch động cơ bản LIS các bạn có thể lên mạng xem
python 3 nha
Đã update test (credit: A519LeVanDuc)
Spoiler Alert
Hint 1
Hint 2
Hint 3
Hint 4
Reference AC code | \(O(n ^ 2)\) time | \(O(n)\) auxiliary space | LIS-problem, DP
Reference AC code | \(O(n ^ 2)\) time | \(O(n)\) auxiliary space | Online solving, LIS-problem, DP