bxd123

题目描述

蒟蒻Edt把这个问题交给了你 ———— 一个精通数据结构的大犇,由于是第一题,这个题没那么难。。

edt 现在对于题目进行了如下的简化:

最开始的数组每个元素都是0

给出nn,optopt,modmod,minmin,maxmax,modmod在int范围内

操作AA,QQ

AA: LL,RR,XX 表示把[l,R][l,R]这个区间加上XX

(数组的从L到R的每个元素都加上X)

QQ: LL,RR 表示询问[L,R][L,R]这个区间中元素T满足 min<=(T*imin<=(Ti%mod)<=maxmod)<=max 的 T这样的数的个数(i是数组下标)

(元素的值*数组下标%mod在min到max范围内)

由于 edt 请来了一位非三次元的仓鼠,他帮你用延后了部分问题,将这些询问打入了混乱时空,你的询问操作不会超过1000次,不幸的是,对于延后的询问操作可能有很多次(小于1e7次),但是保证这些延后的询问操作之后不会再次有修改操作

(就是在最后会有很多次询问,但不会进行修改)

输入输出格式

输入格式:

 

给出n,opt,mod,min,max表示序列大小,操作次数,取膜,最小值,最大值

下面opt行,给出

AA: LL,RR,XX表示区间加,保证X在int范围内(<2147483647)

QQ:LL,RR表示区间查询满足条件的个数

再给出一个FinalFinal值,表示后面有FinalFinal个询问

下面FinalFinal行,给出

LL,RR表示询问区间[L,R][L,R]表示询问[L,R][L,R]之间满足条件的个数

 

输出格式:

 

每行对于每个QQ操作输出QQ个数表示每次询问的值,

下面FinalFinal行表示FinalFinal个询问的值

 

用差分数组还是比较简单的   

注意开longlong

//#include<bits/stdc++.h>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<map>
using namespace std;
//input by bxd
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define repp(i,a,b) for(int i=(a);i>=(b);--i)
#define RI(n) scanf("%d",&(n))
#define RII(n,m) scanf("%d%d",&n,&m)
#define RIII(n,m,k) scanf("%d%d%d",&n,&m,&k)
#define RS(s) scanf("%s",s);
#define ll long long
#define pb push_back
#define CLR(A,v)  memset(A,v,sizeof A)
#define inf 0x3f3f3f3f
#define lson l,m,pos<<1
#define rson m+1,r,pos<<1|1
//////////////////////////////////////
const int N=3e6+5;
ll differ[N],m,n,minn,maxx,mod,a,b,c,d[N],q,ans[N];
char s[2];

int main()
{
    cin>>n>>m>>mod>>minn>>maxx;
    rep(i,1,m)
    {
        RS(s);
        if(s[0]==\'A\'){scanf("%lld%lld%lld",&a,&b,&c);differ[a]+=c;differ[b+1]-=c;}
        else
        {
            scanf("%lld%lld",&a,&b);int cnt=0;
            rep(i,1,b){d[i]=d[i-1]+differ[i];if(i>=a&&i<=b&& d[i]*i%mod>=minn&&d[i]*i%mod<=maxx)cnt++;}
            cout<<cnt<<endl;
        }
    }
    rep(i,1,n)d[i]=d[i-1]+differ[i];
    rep(i,1,n)
    if(d[i]*i%mod>=minn&&d[i]*i%mod<=maxx)ans[i]=ans[i-1]+1;
    else ans[i]=ans[i-1];

    RI(q);
    while(q--)
    {
         RII(a,b);cout<<ans[b]-ans[a-1]<<endl;
    }

    return 0;
}
View Code

 

分类:

技术点:

相关文章:

  • 2021-10-12
  • 2021-09-14
  • 2021-10-20
  • 2021-10-19
  • 2021-06-04
  • 2022-01-11
猜你喜欢
  • 2021-12-10
  • 2021-05-06
  • 2021-10-16
  • 2021-12-09
  • 2021-10-27
  • 2022-01-20
  • 2021-12-30
相关资源
相似解决方案