0w1

CFR 349 B. Color the Fence ( Greedy )

http://codeforces.com/contest/349/problem/BProblem - B - Codeforces
題意:
給初始金錢和每一個數字產生的花費,數字可以以字串方式連接,求可造的最大數字。
解法:
透過最少花費,先計算最長長度是多少。接著貪心取當前不會讓最長長度無法達到的前提下的最大數字。

int V;
vi A;

void init(){
    cin >> V;
    A = vi( 10 );
    for( int i = 1; i <= 9; ++i )
        cin >> A[ i ];
}

void preprocess(){

}

void solve(){
    int minc = INF;
    for( int i = 1; i <= 9; ++i )
        upmin( minc, A[ i ] );
    int len = V / minc;
    if( len == 0 ){
        cout << -1 << endl;
        return;
    }
    while( len ){
        for( int i = 9; i >= 1; --i )
            if( V >= A[ i ] and ( V - A[ i ] ) / minc == len - 1 ){
                cout << i,
                V -= A[ i ],
                --len;
                break;
            }
    }
    cout << endl;
}