社区讨论

求优化O(n^2)

P1020[NOIP 1999 提高组] 导弹拦截参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mhjdbha5
此快照首次捕获于
2025/11/04 00:42
4 个月前
此快照最后确认于
2025/11/04 00:42
4 个月前
查看原帖
前十个测试点AC了,后面全是TLEQwQ
CPP
#include <bits/stdc++.h>
using namespace std;
#define long long int
vector<int> p[1010];
int d=0;
#define N 100010
int dp[N];
signed main(){
	int n=0;
	int a[N];
	while(cin>>a[n++]);
	// 
	for(int i=0;i<n;i++){
		for(int j=i;j>=0;j--){
			if(a[i]<=a[j]){
				dp[i]=max(dp[i],dp[j]+1);
			}
		}
	}
	int MAX=INT_MIN;
	for(int i=0;i<n;i++)MAX=max(MAX,dp[i]);
	cout<<MAX-1<<"\n";
	//
	for(int i=0;i<n;i++){
		bool f=0;
		for(int j=0;j<d;j++){
			if(p[j].back()>=a[i]){
				p[j].push_back(a[i]);
				f=1;
				break;
			}
		}
		if(f==0){
			p[d].push_back(a[i]);
			d++;
		}
	}
	cout<<d<<"\n";
}

回复

0 条回复,欢迎继续交流。

正在加载回复...