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;
}