0
点赞
收藏
分享

微信扫一扫

阿朱与旭宝宝的高楼游戏---差分

钵仔糕的波波仔 2022-02-28 阅读 81
算法

在这里插入图片描述
在这里插入图片描述

#include <iostream>
#include <algorithm>
#include <cmath>

using namespace std;
#define int long long
#define x first
#define y second
const int N = 100010;
int h[N];
void solve()
{
	int n,m;
	cin>>n>>m;
	for(int i=1;i<=n;i++)cin>>h[i];
	for(int i=n;i>=1;i--)h[i]-=h[i-1];
	int res=0;
	for(int i=n;i-m>0;i--)
		if(h[i]>0)
			res+=h[i],h[i-m]+=h[i],h[i]=0;
	for(int i=2;i+m-1<=n;i++)
		if(h[i]<0)res-=h[i],h[i+m]+=h[i],h[i]=0;
	for(int i=2;i<=n;i++)
		if(h[i])
			res=-1;
	cout<<res<<'\n';
}
signed main()
{
	int T;cin>>T;
	while(T--)solve();
}

举报

相关推荐

前缀和与差分:798. 差分矩阵

前缀和与差分

差分与前缀和

差分&C++差分函数

差分

差分、微分、变分

0 条评论