| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
WHY WA??#include <iostream>
#include <cstring>
using namespace std;
char s1[ 2010 ], s2[ 2010 ];
int dp[ 2010 ][ 2010 ][ 2 ];
int len, n, all[ 2 ];
int ch[ 150 ][ 2 ];
void reverse( char *s, int len )
{
for ( int i = 0; i < len / 2; ++i )
swap( s[ i ], s[ len - 1 - i ] );
}
int main()
{
int i, j, c;
char buf[ 100 ], *token;
while ( ~scanf( "%d %d", &n, &len ) )
{
getchar();
gets( s1 + 1 );
memset( ch, 0, sizeof( ch ) );
for ( i = 0; i < n; ++i )
{
gets( buf );
token = strtok( buf, " " );
c = token[ 0 ];
token = strtok( NULL, " " );
ch[ c ][ 0 ] = atoi( token );
token = strtok( NULL, " " );
ch[ c ][ 1 ] = atoi( token );
}
all[ 0 ] = all[ 1 ] = 0;
for ( i = 1; i <= len; ++i )
{
all[ 0 ] += ch[ s1[ i ] ][ 0 ];
all[ 1 ] += ch[ s1[ i ]][ 1 ];
}
for ( i = 0; i <= len; ++i )
{
dp[ 0 ][ i ][ 0 ] = dp[ i ][ 0 ][ 0 ] = all[ 0 ];
dp[ 0 ][ i ][ 1 ] = dp[ i ][ 0 ][ 1 ] = all[ 1 ];
}
int MIN = min( all[ 0 ], all[ 1 ] );
for ( i = 1; i <= len; ++i )
{
for ( j = 1; j <= len; ++j )
{
if ( s1[ i ] == s1[ len + 1 - j ] )
{
MIN = min( MIN, dp[ i ][ j ][ 0 ] = dp[ i - 1 ][ j - 1 ][ 0 ] - ch[ s1[ i ] ][ 0 ] );
MIN = min( MIN, dp[ i ][ j ][ 1 ] = dp[ i - 1 ][ j - 1 ][ 1 ] - ch[ s1[ i ] ][ 1 ] );
}
else
{
dp[ i ][ j ][ 0 ] = min( dp[ i - 1 ][ j ][ 0 ], dp[ i ][ j - 1 ][ 0 ] );
dp[ i ][ j ][ 1 ] = min( dp[ i - 1 ][ j ][ 1 ], dp[ i ][ j - 1 ][ 1 ] );
}
}
}
printf( "%d\n", MIN );
}
return 0;
}
我自己怎麼測都對
有哪位牛人可以提供測資嗎@@
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator