4分蒟蒻求助
查看原帖
4分蒟蒻求助
794893
LYJ_B_O_Creation楼主2023/12/18 16:52

rt

以下为蒟蒻代码:

#include<bits/stdc++.h>
#define int long long
using namespace std;
char ch;
int l , r , x , j , jd;
int d[10000] , e[10000] , ss , sss;
signed main()
{
	int count[10000];
	int n , opt , mod , min , max;
	cin >> n >> opt >> mod >> min >> max;
	for(int i = 1;i <= opt;i++)
	{
		cin >> ch;
		if(ch == 'A')
		{
			cin >> l >> r >> x;
			d[l] += x;
			d[r + 1] -= x;//差分标记 
		}
		else
		{
			cin >> l >> r;
			int s = 0 , ans = 0;
			int i;
			for(i = 1;i < l;i++)//单数据前缀和 
			{
				s += d[i];
			}
			for(;i <= r;i++)
			{
				s += d[i];
				jd = s * i % mod;
				if(jd >= min && jd <= max)
				{
					ans++;
				}
			}
			cout << ans << endl;
		}
	}
	//做一个整体的种数的构建 
	for(int i = 1;i <= n;i++)
	{
		d[i] += d[i - 1];
		if(d[i] >= min && d[i] <= max)
		{
			count[i] = 1;
		}
		count[i] += count[i - 1];//数量的前缀和 
				 
	}
	int final;
	cin >> final;
	for(int i = 1;i <= final;i++)
	{
		//构建O(1)复杂度 
		cin >> l >> r;
		cout << count[r] - count[l - 1] << endl;
	}
	return 0;
}
2023/12/18 16:52
加载中...