樹狀數組求LIS
阿新 • • 發佈:2018-07-09
std odi spa namespace int 真的是 esp lis i++
我真的是鹹魚啊
多少年前的基礎了我竟然才弄明白,哭
用樹狀數組維護<=x的最上上升子序列的最大值即可啊Orz
我真的菜的一筆啊!
#include <bits/stdc++.h> using namespace std; map<int,int>mp; int f[50005],n,t[50005]; void modify(int x,int Max){ for(int i=x;i<=50004;i+=x&-x) { t[i]=max(t[i],Max); } } int ask(int x) { int res=0; for(int i=x;i;i-=i&-i) { res=max(res,t[i]); } return res; } int main() { scanf("%d",&n); for(int tp,i=1,x;i<=n;i++) { scanf("%d",&x); f[i]=ask(x)+1; modify(x,f[i]); } for(int i=1;i<=n;i++)printf("%d ",f[i]); }
樹狀數組求LIS