J T2蜜汁95求调
  • 板块学术版
  • 楼主MarSer020
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/10/22 15:56
  • 上次更新2023/10/22 17:19:11
查看原帖
J T2蜜汁95求调
475112
MarSer020楼主2023/10/22 15:56

rt,其他地方都过了

代码:

/*
luogu uid:475112
Genshin,Start!
time:8:58
*/
#include<bits/stdc++.h>
using namespace std;
int n,d,a[100005],dis[100005],stk[100005],nxt[100005],top;
long long ans,s[100005],t;
double cur,tmp;
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin>>n>>d;
	for(int i=2;i<=n;i++){
		cin>>dis[i];
		s[i]=s[i-1]+dis[i];
	}
	for(int i=1;i<n;i++)
		cin>>a[i];
	stk[++top]=n;
	for(int i=n;i>=1;i--){
		while(top&&a[stk[top]]>=a[i])
			top--;
		nxt[i]=stk[top],stk[++top]=i;
	}
	for(int i=1;i<n;i=nxt[i])
		tmp=1.0*(s[nxt[i]]-s[i])/d,t=ceil(max(1.0*(s[nxt[i]]-s[i])/d-cur,.0)),ans+=t*a[i],cur+=t-tmp;
	cout<<ans;
	return 0;
}
2023/10/22 15:56
加载中...