题目的意思跟 Missile 是一样的(见上篇),数据量变大而已。 A之。
代码:
#include <cstdio>
#include <queue>
using namespace std ;
#define maxn 30009
#define max(a,b) a>b?a:b
int t,n;
int dp[maxn] , a[maxn] ;
int main () {
scanf ( "%d" , &t ) ;
while ( t-- ) {
scanf ( "%d" , &n ) ;
// a[0] = -1023456789 ;
for ( int i = 1 ; i <= n ; ++i ) scanf ( "%d" , &a[i] ) ;
dp[1] = 1 ; // '1' means an 'odd' missile
for ( int i = 2 ; i <= n ; ++i ) {
dp[i] = dp[i-1] ;
if ( a[i] > a[i-1] ) {
if ( dp[i-1] % 2 == 0 ) ++dp[i] ;
}
else if ( a[i] < a[i-1] ) {
if ( dp[i-1] % 2 == 1 ) ++dp[i] ;
}
}
int ans = 0 ;
// for ( int i = 1; i <= n ; ++i ) printf ( "%d " , dp[i][0] );
// printf ( "\n" ) ;
// for ( int i = 1 ; i <= n ; ++i ) printf ( "%d " , dp[i][1] ) ;
for ( int i = 1 ; i <= n ; ++i ) {
ans = max ( ans , dp[i] ) ;
}
printf ( "%d\n" , ans ) ;
}
//system ( "pause" ) ;
return 0 ;
}