4 条题解
-
1
#include <bits/stdc++.h> using namespace std; #define int long long const int N=210; int dp[N],a[N],n; signed main(void) { ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr); cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; } fill(dp,dp+n+1,0x3f3f3f3f3f3f3f3f);dp[1]=0; for(int i=1;i<=n;i++){ if(a[i+1]==a[i]+1) dp[i+1]=min(dp[i+1],dp[i]+1); for(int j=1;j<i;j++){ for(int k=i;k<=n;k++){ if(a[k]<=a[i-j]+(1ll<<j)) dp[k]=min(dp[k],dp[i]+j+1); } } } cout<<(dp[n]==0x3f3f3f3f3f3f3f3f?-1:dp[n])<<'\n'; return 0; }
信息
- ID
- 4487
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 8
- 标签
- (无)
- 递交数
- 651
- 已通过
- 96
- 上传者