【求助】DP 水题 样例没过,提交 AC?
  • 板块P3902 递增
  • 楼主WhileTrueRP
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/2/26 21:25
  • 上次更新2024/2/27 12:26:58
查看原帖
【求助】DP 水题 样例没过,提交 AC?
373198
WhileTrueRP楼主2024/2/26 21:25
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+5;
int dp[N],q[N],a[N],len = 0;
bool cmp(int X,int Y){
	return X < Y;
}
int main(){
//	freopen("P3902_1.in","r",stdin);
	int n;
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%d",&a[i]);
	}
	a[0] = 0x3f3f3f3f;
	for(int i=1;i<=n;i++){
		int l = 1,r = len;
		while(l < r){
			int mid = (l+r+1)>>1;
			if(a[q[mid]] < a[i]){
				l = mid;
			}else{
				r = mid-1;
			}
		}
		dp[i] = dp[q[l]] + 1;
		if(a[i] < a[q[dp[i]]]){
			q[dp[i]] = i;
		}
//		cout<<dp[i]<<' ';
		len = max(len,dp[i]);
	}
	printf("%d",n-len+1);
} 
2024/2/26 21:25
加载中...