序列分割[斜率优化]

传送门

可以证明选的顺序对答案没有影响

于是有转移方程

f[i][j] = max(f[k][j-1] + s[k] * (s[i] - s[k]))

变形得到 f[i][j] = f[k][j-1] - s[k] * s[k] + s[i] * s[k]

我们令b-> f[i][j] , y -> f[i][j-1] - s[j] * s[j] , k->-s[i] , x->s[k]

另外 , 写之前最好画图考虑细节

最大值维护上凸包,斜率是负数 , 所以图大概是这样

然后树形结合来写


#include<bits/stdc++.h>
#define N 100050
#define M 205
#define y(k,x) (f[x][k-1]-s[x]*s[x])
#define LL long long
using namespace std;
LL f[N][M]; int from[N][M];
int n,k,val[N],q[N]; LL s[N];
double K(int now,int i,int j){
	if(s[i]==s[j]) return 1e18;
	return  (y(now,j)-y(now,i))*1.0/(s[j]-s[i])*1.0;
}
void dfs(int i,int j){
	if(j==0) return;
	i=from[i][j]; printf("%d ",i); dfs(i,j-1);
}
int main(){
	scanf("%d%d",&n,&k);
	for(int i=1;i<=n;i++){
		scanf("%d",&val[i]); s[i]=(LL)s[i-1]+val[i];
	}
	for(int i=1;i<=k;i++){
		int l=1,r=0;
		for(int j=1;j<=n;j++){
			while(l<r && K(i,q[l],q[l+1]) >= -s[j]) l++;
			f[j][i] = f[q[l]][i-1] + (LL)s[q[l]] * (s[j]-s[q[l]]);
			from[j][i] = q[l];
			while(l<r && K(i,q[r],j) >= K(i,q[r-1],q[r])) r--;
			q[++r] = j;
		}
	}printf("%lld\n",f[n][k]); dfs(n,k);
	return 0;
} 

 

随机森林时间序列分析是一种将时间序列数据转化为子序列的统计特征,并利用随机森林进行分类的方法。在该方法中,时间序列分割成不重叠的子序列,并计算每个子序列的均值、方差和斜率等统计特征。然后,使用随机森林算法对这些统计特征进行分类。具体来说,训练过程中,每棵决策树都选择根号m个随机区间,计算每个子序列的随机区间的均值、标准差和斜率,并在这些特征上构建和训练一棵决策树。最后,通过集成所有决策树的分类结果,得到最终的分类结果。 随机森林时间序列分析可以通过调整超参数来优化模型的准确率。研究表明,当使用随机森林作为分类器时,最优的准确率通常在n_estimators=6时达到,并且可以通过使用Pipeline管道机制进行流水线作业来实现。 随机森林时间序列分析不仅可以用于分类问题,还可以用于回归问题。当用于分类时,输出结果是每个子分类器的分类结果中出现次数最多的类别。可以将其理解为每个分类器进行投票,选择得票最多的结果作为最终的分类结果。而在回归问题中,输出结果是每棵决策树的回归结果的平均值。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [时间序列分类算法之时间序列森林(TSF)](https://blog.youkuaiyun.com/qq_16669583/article/details/105543061)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [数据分析-随机森林,GridSearchCV,逻辑回归,混淆矩阵,时间序列分析](https://blog.youkuaiyun.com/zyh960/article/details/119758658)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FSYo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值