95分求助
查看原帖
95分求助
1086605
orrshcaet楼主2024/8/22 11:30

代码如下 第五个测试点错了(WA) 不确定原因

#include<bits/stdc++.h>
using namespace std;
long long n,d,cnt,ans,r,y;
long long v[100005],a[100005];

int main(){
	cin>>n>>d;
	for(int i=1;i<=n-1;i++){
		cin>>v[i];
	}
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	y=a[1];
	long long endd=1,o=1;
	while(o<n){
		for(long long i=o;i<=n+1;i++){
			
			if(a[i]<y){
				long long road;
				for(long long j=o;j<i;j++){
					road+=v[j];
				}
				if((road-r)%d==0){
					cnt+=(road-r)/d*a[o];
					r=0;
				} else{
					cnt+=((road-r)/d+1)*a[o];
					r=r+((road-r)/d)*d+d-road;
				}
				y=a[i];
				o=i;
				road=0;
			}
		}
		
	}
	cout<<cnt;
	return 0;
}

不过值得一提的是,在把for(long long i=o;i<=n+1;i++)中的n+1换成n时,会变成只有测试点5正确,其他tle(应该是死循环) 不知道有没有改变的方法 求大佬指点。

2024/8/22 11:30
加载中...