題意:
求一個序列的最大子序列,該子序列滿足:a1>a2a4.....。
分析:
貪心,從極大值起交替取這個序列中極小值、極大值。
代碼:
//poj 3298 //sep9 #includeusing namespace std; const int maxN=30024; int a[maxN]; int main() { int cases; scanf("%d",&cases); while(cases--){ int i,j,n,s=0; scanf("%d",&n); for(i=1;i<=n;++i) scanf("%d",&a[i]); int ans=1; for(i=1;i+1<=n;++i){ if(a[i]>a[i+1]){ s=0; ++ans; for(j=i+1;j+1<=n;++j){ if((s==0&&a[j]a[j+1])){ ++ans; s=s^1; } } break; } } printf("%d\n",ans); } return 0; }