求调,csp-j T2 90分
  • 板块学术版
  • 楼主mystic_qwq
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/10/24 09:38
  • 上次更新2023/11/2 11:37:30
查看原帖
求调,csp-j T2 90分
246331
mystic_qwq楼主2023/10/24 09:38
//CSP-J2023l!2
#include<stdio.h>
#define G getchar_unlocked()
#define ll long long
#define MAXN 100001

int re(){
  int i=0,c,f=0;
  while((c=G)<48)c=='-'&&(f=1);
  for(;c>47;c=G)i=(i<<1)+(i<<3)+(c^48);
  return i;
}

int n,dper,dis[MAXN],a[MAXN];
int main(){
  freopen("road.in","r",stdin);
  freopen("road.out","w",stdout);
  n=re(),dper=re();
  for(int i=1;i<n;++i)dis[i]=re();
  for(int i=1;i<=n;++i)a[i]=re();
  ll ans=0,big=a[1],distance=dis[1];
  for(int i=2;i<n;distance+=dis[i++]){
    if(a[i]<big){
      //printf("dis=%d big=%lld ans=%lld a[%d]=%d\n",distance,big,ans,i,a[i]);
      ll di=distance/dper;
      if(distance>0){
        if(di*dper==distance){
          distance=0;
          ans+=di*big;
          big=a[i];
        }
        else{
          distance-=(++di)*dper;
          ans+=di*big;
          big=a[i];
        }
      }
    }
  }
  ll di=0;
  if(distance>0){
    if(distance%dper==0)
      di=distance/dper;
    else di=distance/dper+1;
  }
  printf("%lld\n",ans+di*big);
  return 0;
}

2023/10/24 09:38
加载中...