求助,不知哪里有误!

P1020 [NOIP1999 提高组] 导弹拦截

1. RE因为数组太小 2.这题满分200分,用优化二分或第二欧斯定理可以200分
by hyacinthdreams @ 2024-02-04 16:39:21


AC代码: ```cpp #include<iostream> #include<bits/stdc++.h> using namespace std; const int N=5e5+100; int a[N]; int t=0,d[N],f[N]; int main() { int ans=1; int n=0; while(scanf("%d",&a[++n])!=EOF); n--; for (int i=1;i<=n;i++){ f[i]=1; for (int j=t;j>0;j--){ if (a[d[j]]>=a[i]) { f[i]=f[d[j]]+1; break; } } t=max(t,f[i]); d[f[i]]=i; ans=max(f[i],ans); } cout<<ans<<endl; ans=1; t=0; for(int i=1;i<=n;i++){ f[i]=1; for (int j=t;j>0;j--) { if (a[d[j]]<a[i]){ f[i]=f[d[j]]+1; break; } } t=max(t,f[i]); d[f[i]]=i; ans=max(f[i],ans); } cout<<ans<<endl; return 0; } ```
by wnsndg @ 2024-02-06 19:59:17


|