求助,过样例系列
  • 板块P6196 [EER1] 代价
  • 楼主Boar
  • 当前回复0
  • 已保存回复0
  • 发布时间2020/8/5 15:38
  • 上次更新2023/11/6 21:14:33
查看原帖
求助,过样例系列
325404
Boar楼主2020/8/5 15:38
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int main(){
	long n,s=0;
	scanf("%ld",&n);
	int a[n+2];
	for(int i=1;i<=n;i++) cin>>a[i];
	a[0]=a[n+1]=1;
	int k[500],r=0;
	for(int i=0;i<=n+1;i++) if(a[i]==1) k[r++]=i;
	for(int g=0;g<r-1;g++){
		int p=k[g]+1,q=k[g+1]-1;
		if(p>q) continue;
		if(p==q){
			s+=a[p];
			continue;
		}
		if(p==q-1){
			s+=a[p]*a[p+1]+min(a[p],a[p+1]);
			continue;
		}
		while(p+1!=q-1){
			if(a[p]*a[p+1]>a[q]*a[q-1]) s+=a[q]*a[q-1],q--;
			else s+=a[p]*a[p+1],p++;		
		}
		s+=a[q]*a[q-1]+a[p]*a[p+1]+min(min(a[p],a[p+1]),a[q]);
	}
	s+=r-2;
	printf("%ld",s);
	return 0;
}
2020/8/5 15:38
加载中...