dp90分求助
查看原帖
dp90分求助
778975
QAQ_YTH楼主2024/6/3 22:57

rt

#include<bits/stdc++.h>
using namespace std;
long long n,a[100001],f[100001];
int  main(){
	cin>>n;
	for(long long i=1;i<=n;i++){
		cin>>a[i];
	}
	long long QAQ=0x3f;
	memset(f,QAQ,sizeof(f));
	f[1]=0;
	for(long long i=2;i<=n;i++){
		if(a[i]<=a[i-1]+1)f[i]=f[i-1]+1;
		for(long long j=i-1;j>=1;j--){
			for(long long k=j-1;k>=1;k--){
				if((1<<(j-k))+a[k]>=a[i])f[i]=min(f[i],f[j]+j-k+1);
			}
		}
	}
	if(f[n]<=QAQ)cout<<f[n];
	else cout<<-1;
	return 0;
}

2024/6/3 22:57
加载中...