线性dp-综合刷题1(Not Alone)

题目链接

环形数组优美可以有两种方式:一种是前面i-2个数可以组成优美的环形数组,让第i个和第i-2个数变相同;还有一种是前面i-3个数可以组成优美的环形数组,让第i-2个、第i-1个和第i个数变相同。

那要变相同的数怎么加减次数最少呢?往他们中位数的方向去变。记录最大值maxx和最小值minn,最少的加减次数为maxx-minn。

AC代码:

cpp 复制代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=400005;
int t,n,dp[maxn],a[maxn],ans;
signed main(){
	cin>>t;
	while(t--){
		cin>>n;
		ans=1e18;
		for(int i=1;i<=n;i++) {
	 		cin>>a[i];
			a[i+n]=a[i];	
		}
		for(int i=0;i<3;i++){
			for(int j=1;j<=n*2;j++) dp[j]=1e18;
			dp[i]=0;
			for(int j=i+1;j<=i+n;j++){
				if(j>=2) dp[j]=min(dp[j],dp[j-2]+abs(a[j]-a[j-1]));
				if(j>=3){
					int maxx=0,minn=1e18;
					for(int k=j-2;k<=j;k++){
						maxx=max(maxx,a[k]);
						minn=min(minn,a[k]);
					}
					dp[j]=min(dp[j],dp[j-3]+maxx-minn);
				}
			}
			ans=min(ans,dp[n+i]);
		}
		cout<<ans<<endl;
	}
	return 0;
} 
相关推荐
爱刷碗的苏泓舒3 小时前
PPP-AR 中的参考星选取:数学原理、评价指标与切换处理
算法·gnss·模糊度固定·ppp-ar·星间单差·参考星·卫星端偏差
烬羽6 小时前
递归老写崩?一个"退回"公式,把回溯题变成填空题
javascript·深度学习·算法
闪电悠米6 小时前
力扣hot100-41.缺失的第一个正数-原地哈希详解
数据结构·算法·哈希算法
星空露珠6 小时前
28种颜色对应名称,
开发语言·数据库·算法·游戏·lua
QXWZ_IA8 小时前
桥梁数字孪生怎么落地?
人工智能·科技·算法·智能硬件·政务
Kel8 小时前
输出层与反分词(Output Layer & Detokenization)
人工智能·算法·架构
陕西企来客8 小时前
2026年7月技术好GEO优化方案:算法适配与内容策略
人工智能·算法·机器学习·技术好geo优化
风栖柳白杨8 小时前
【面试】AI算法工程师_空白自测版本
人工智能·算法·面试
闪电悠米10 小时前
力扣hot100-73.矩阵置零-标记数组详解
算法·leetcode·矩阵
栋***t10 小时前
从“纸质试卷”到“AI智能组卷”,麦塔在线考试系统如何重构出题逻辑?
java·大数据·人工智能·算法·重构