100pts求优化
查看原帖
100pts求优化
748934
LogicLiu楼主2023/8/30 16:33
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main(){
	vector<int> missiles;
	int height;
	while(cin >> height){
		missiles.push_back(height);
	}

	vector<int> dp(missiles.size(), 1);
	for(int i = 1; i < missiles.size(); i++){
		for(int j = 0; j < i; j++){
			if(missiles[i] <= missiles[j]){
				dp[i] = max(dp[i], dp[j] + 1);
			}
		}
	}

	int max_intercept = *max_element(dp.begin(), dp.end());

	vector<int> systems(missiles.size(), 1);
	for(int i = 1; i < missiles.size(); i++){
		for(int j = 0; j < i; j++){
			if(missiles[i] > missiles[j] && systems[i] < systems[j] + 1){
				systems[i] = systems[j] + 1;
			}
		}
	}

	int min_systems = *max_element(systems.begin(), systems.end());

	cout << max_intercept << endl;
	cout << min_systems << endl;

	return 0;
}

评测记录

2023/8/30 16:33
加载中...