这道题 上加强了数据范围然呢并没有什么用。
表示前
株可以留下的最大的株数,其中
;
表示前
株可以留下的最大的株数,其中
。
转移的话算一下拐点就好。
关键代码:
int main(){
...
for(I=1;I<=N;I++) {
for(J=I-1;J>=1;J--){
if(A[J]>A[I]){
DP(I,0)=max(DP(J,1)+1,DP(I,0));
}
if(A[J]<A[I]){
DP(I,1)=max(DP(J,0)+1,DP(I,1));
}
if(DP(I,0)!=1&&DP(I,1)!=1){
break;
}
}
}
...
}