这道题一秒一秒的扫描一定会超时,所以就用一种O(N)的算法。
#include<bits/stdc++.h> using namespace std; int n,m,a[100001],b[100001],c[100001],x=0,k; int main(){ scanf("%d%d",&n,&m); for(int i=1;i<n;i++) scanf("%d",&a[i]); for(int i=1;i<=n;i++) scanf("%d",&b[i]); for(int i=1;i<=n;i++) scanf("%d",&c[i]); for(int i=1;i<=n;i++){ if(i>=2) m+=a[i-1]; if(c[i]<m%(b[i]+c[i])) m+=(b[i]+c[i]-m%(b[i]+c[i])); //%%大法好 printf("%d\n",m); } return 0; }
原文:https://www.cnblogs.com/yzx1798106406/p/8992773.html