【題解】UVA 00231 Testing the CATCHER

【題目敘述】https://vjudge.net/problem/UVA-231
【解題想法】DP: Longest Non-Increasing Subsequence (LDS) 非嚴格遞減

#include <bits/stdc++.h>
using namespace std;

vector <int> v;
int Case, n;

int main(){
    while (1){
        cin >> n;
        if (n == -1) break;
        v.clear();
        v.push_back(n);
        while (1){
            cin >> n;
            if (n == -1) break;
            if (n <= v[v.size()-1]) v.push_back(n);
            else {
                for (int i = 0; i < v.size(); i++){
                    if (n > v[i]){
                        v[i] = n;
                        break;
                    }
                }
            }
        }
        if (Case) cout << "\n";
        Case++;
        cout << "Test #" << Case << ":\n";
        cout << "  maximum possible interceptions: " << v.size() << "\n";
    }
}
分享本文 Share with friends