20分求救
  • 板块P3948 数据结构
  • 楼主sieve
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/7/7 21:00
  • 上次更新2024/7/8 07:17:14
查看原帖
20分求救
931664
sieve楼主2024/7/7 21:00
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,opt,mod,mn,mx,ans,final,a[1000005],sum[1000005],diff[1000005];
void init()
{
	for(int i=1;i<=n;++i)
	{
		int s=a[i]*i%mod;
		sum[i]=sum[i-1];
		if(s>=mn&&s<=mx) sum[i]++;
	}
}
signed main()
{
	ios::sync_with_stdio(false);
	cin.tie(0),cout.tie(0);
	cin>>n>>opt>>mod>>mn>>mx;
	while(opt--)
	{
		char ch;
		cin>>ch;
		if(ch=='A')
		{
			int l,r,x;
			cin>>l>>r>>x;
			diff[l]+=x;
			diff[r+1]-=x;
		}
		else
		{
			int ans=0,l,r;
			cin>>l>>r;
			for(int i=1;i<=n;++i)
			{
				sum[i]=sum[i-1]+diff[i];
			}
			for(int i=l;i<=r;++i)
			{
				if(sum[i]*i%mod>=mn&&sum[i]*i%mod<=mx) ans++;
			}
			cout<<ans<<'\n';
		}
	}
	cin>>final;
	memset(sum,0,sizeof(sum));
	init();
	while(final--)
	{
		int l,r;
		cin>>l>>r;
		cout<<sum[r]-sum[l-1]<<'\n';
	}
	return 0;
}

第三个样例全输出 00 。

2024/7/7 21:00
加载中...