最长不上升子序列nlogn写法有问题吗?

P1020 [NOIP1999 提高组] 导弹拦截

这是拦截导弹的整个代码, 大犇不必看贪心(第二个)。 ``` #include<iostream> #include<cstdio> using namespace std; int n=0,s[100000]= {},a[100000]= {},head[10000]={},len=1,num=1; int upper_bound(int x,int y,int v) { int m; while(x<y) { m=x+(y-x)/2; if(s[m]==v)return m; if(s[m]<v)y=m; else x=m+1; } return y; } int main() { while(cin>>a[n])n++; head[0]=a[0],s[0]=a[0]; for(int i=1; i<n; i++) { bool ok=1; if(a[i]<=s[len-1])s[len++]=a[i]; else s[upper_bound(0,len-1,a[i])]=a[i]; for(int j=0; j<num; j++) { if(head[j]>=a[i]) { head[j]=a[i]; ok=false; break; } } if(ok) { head[num++]=a[i]; } } cout<<len<<endl; cout<<num<<endl; return 0; } ```
by zach0914 @ 2019-01-16 19:31:58


希望尽快回复,感谢回复的大犇!
by zach0914 @ 2019-01-16 19:32:50


|