运用Dilworth定理求最长上升子序列数量有什么问题吗
【WA】
【题目传送门】
#include <bits/stdc++.h>
#define int long long
using namespace std;
int n;
int mp[1000001];
int ge[1000001];
signed main() {
memset(ge, -0x3f, sizeof ge);
cin >> n;
for (int i = 1; i <= n; i++)
cin >> mp[i];
int ans = 1;
for (int i = 1; i <= n; i++) {
int w = upper_bound(ge + 1, ge + ans + 1, mp[i],greater<int>()) - ge;
ge[w] = mp[i];
ans = max(ans, w);
}
cout << ans;
return 0;
}