BZOJ-2748: [HAOI2012]音量调节(DP)

题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2748

额。。。裸裸的DP,直接推一次就好了额。。。

代码:

#include <cstdio>
#include <algorithm>
#include <cstring>
 
using namespace std ;
 
const int maxn = 51 , maxl = 1010 ;
 
bool f[ maxn ][ maxl ] ;
int n , bl , ml , c[ maxn ] ;
 
int main(  ) {
    scanf( "%d%d%d" , &n , &bl , &ml ) ;
    for ( int i = 0 ; i ++ < n ; ) scanf( "%d" , c + i ) ;
    memset( f , false , sizeof( f ) ) ;
    f[ 0 ][ bl ] = true ;
    for ( int i = 0 ; i ++ < n ; ) {
        for ( int j = 0 ; j <= ml ; ++ j ) if ( f[ i - 1 ][ j ] ) {
            if ( j - c[ i ] >= 0 ) f[ i ][ j - c[ i ] ] = true ;
            if ( j + c[ i ] <= ml ) f[ i ][ j + c[ i ] ] = true ;
        }
    }
    for ( int i = ml ; i >= 0 ; -- i ) if ( f[ n ][ i ] ) {
        printf( "%d\n" , i ) ;
        return 0 ; 
    }
    printf( "-1\n" ) ;
    return 0 ; 
}

    原文作者:AmadeusChan
    原文地址: https://www.jianshu.com/p/a0c7ead7194a
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞