社区讨论
20pts dalao求调
P9749[CSP-J 2023] 公路参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @lok6ohpw
- 此快照首次捕获于
- 2023/11/04 23:12 2 年前
- 此快照最后确认于
- 2023/11/05 09:43 2 年前
贪心:每次找他后面第一个比他小的节点
C#include<iostream>
#include<cmath>
#define l long long
#define N int(1e5+10)
using namespace std;
l read(){
l x=0;
short f=1;
char c=getchar();
while(c<'0'||c>'9'){
if(c=='-')f=-f;
c=getchar();
}
while(c>='0'&&c<='9'){
x=(x<<1)+(x<<3)+(c^'0');
c=getchar();
}
return x*f;
}
void write(l x){
if(x<0){
putchar('-');
x=-x;
}
short stk[20],top=0;
do{
stk[top++]=x%10;
x/=10;
}while(x);
while(top)putchar(stk[--top]^'0');
}
l n,d,v[N],a[N],minn[N],cnt=0,vv=0;
int main(){
n=read();
d=read();
for(int i=1;i<n;i++)v[i+1]=read(),v[i+1]=v[i]+v[i+1];
for(int i=1;i<=n;i++)a[i]=read();
minn[n]=n;
for(int i=n-1;i>=1;i--){
if(a[i]>a[i+1]){
minn[i]=i+1;
continue;
}
minn[i]=minn[i+1];
}
for(int i=1;i<n;){
int gg=ceil((v[minn[i]]-v[i]-vv)/(d*1.0));
cnt+=gg*a[i];
vv=gg*d-(v[minn[i]]-v[i]-vv);
i=minn[i];
}
write(cnt);
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...