0分代码求调:LOJ6280
  • 板块题目总版
  • 楼主boluo2014
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/8/1 15:58
  • 上次更新2025/8/1 21:04:21
查看原帖
0分代码求调:LOJ6280
1614338
boluo2014楼主2025/8/1 15:58

分块写挂掉了,求调。评测结果中很多结果都是正确的,但是还是0分。服了。

我的代码是:

#include<bits/stdc++.h>
using namespace std;
const long long maxn=5e5+5; 
long long a[maxn],s[maxn],n,k;
long long f[maxn];
signed main(){
	cin>>n;
	k=(long long)(sqrt(n));
	for(long long i=0;i<n;i++){
		cin>>a[i];
		s[i/k]+=a[i];
	}
	for(long long I=0;I<n;I++){
		long long op,l,r,c;
		cin>>op>>l>>r>>c;
		l--,r--;
		if(op==0){
			if(l/k==r/k){
				for(long long i=l;i<=r;i++){
					a[i]+=c;
				}
				s[l/k]+=(r-l+1)*c;
			}
			else{
				if(l/k==r/k){
					for(long long i=l;i<=r;i++){
						a[i]+=c;
					}
				}
				else{
					for(long long i=l;i<(l/k+1)*k;i++){
						a[i]+=c;
					}
					s[l/k]+=((l/k+1)*k-l)*c;
					for(long long i=l/k+1;i<r/k;i++){
						s[i]+=k*c;
						f[i]+=c;
					}
					for(long long i=r/k*k;i<=r;i++){
						a[i]+=c; 
					} 
					s[r/k]+=(r-(r/k*k)+1)*c;
				}
			}
		}
		else{
			long long ans=0;
			if(l/k==r/k){
				for(long long i=l;i<=r;i++){
					ans+=a[i];
				}
			}
			else{
				for(long long i=l;i<(l/k+1)*k;i++){
					ans+=(a[i]+f[i/k]);
				}
				for(long long i=l/k+1;i<r/k;i++){
					ans+=s[i];
				}
				for(long long i=r/k*k;i<=r;i++){
					ans+=(a[i]+f[i/k]);
				}
			}
			cout<<ans%(c+1)<<endl;
		}
	}
	return 0;
}

链接在这里:这个

请大佬帮助呜呜呜。

2025/8/1 15:58
加载中...