洛谷 U14472 数据结构【比赛】 【差分数组 + 前缀和】
来源:互联网 发布:ev3虚拟仿真软件下载 编辑:程序博客网 时间:2024/05/14 08:16
题目描述
蒟蒻Edt把这个问题交给了你 ———— 一个精通数据结构的大犇,由于是第一题,这个题没那么难。。
edt 现在对于题目进行了如下的简化:
最开始的数组每个元素都是0
给出nnn,optoptopt,modmodmod,minminmin,maxmaxmax,modmodmod在int范围内
操作AAA,QQQ
AAA:LLL,RRR,XXX 表示把[l,R][l,R][l,R]这个区间加上XXX
(数组的从L到R的每个元素都加上X)
QQQ:LLL,RRR 表示询问[L,R][L,R][L,R]这个区间中元素T满足min<=(T∗imin<=(T*imin<=(T∗i%mod)<=max mod)<=maxmod)<=max 的 T这样的数的个数(i是数组下标)
(元素的值*数组下标%mod在min到max范围内)
由于 edt 请来了一位非三次元的仓鼠,他帮你用延后了部分问题,将这些询问打入了混乱时空,你的询问操作不会超过1000次,不幸的是,对于延后的询问操作可能有很多次(小于1e7次),但是保证这些延后的询问操作之后不会再次有修改操作
(就是在最后会有很多次询问,但不会进行修改)
输入输出格式
输入格式:给出n,opt,mod,min,max表示序列大小,操作次数,取膜,最小值,最大值
下面opt行,给出
AAA:LLL,RRR,XXX表示区间加,保证X在int范围内(<2147483647)
QQQ:LLL,RRR表示区间查询满足条件的个数
再给出一个FinalFinalFinal值,表示后面有FinalFinalFinal个询问
下面FinalFinalFinal行,给出
LLL,RRR表示询问区间[L,R][L,R][L,R]表示询问[L,R][L,R][L,R]之间满足条件的个数
输出格式:每行对于每个QQQ操作输出QQQ个数表示每次询问的值,
下面FinalFinalFinal行表示FinalFinalFinal个询问的值
输入输出样例
3 2 4 0 2A 1 3 5Q 2 3 51 32 31 1 2 2 3 3
121110
17 25 4098 310 2622A 10 16 657212040A 4 15 229489140A 1 2 -433239891A 3 12 532385784A 10 17 56266644A 8 10 10038874A 6 9 13084764A 4 5 -9206340Q 2 8A 2 4 -43223955A 6 9 31478706A 2 4 189818310A 2 8 179421180A 2 8 40354938Q 8 14A 3 6 57229575A 6 13 132795740A 2 17 14558022A 14 15 -552674185A 5 11 -1104138Q 2 12Q 1 14A 3 9 524902182A 8 12 114291440A 3 7 107531442111 12
36782
20 3 4317 1020 2232A 8 15 -434078222A 1 2 54988154A 13 19 81757858157 113 53 96 99 136 191 203 53 101 72 146 102 32 310 12
000002200000000
说明
样例说明
给出样例1的解释:
样例1中,aaa数组修改为555,555,555
每个a[i]∗ia[i]*ia[i]∗i%444 的值为111,222,333
对于Final的询问
询问[1[1[1,3]3]3]中大于等于0小于等于2的个数为2个
剩下的询问类似
题目说明
注意:
1.关于负数取模问题,请以 c++ 的向0取整为标准,即如:
[ −7 -7−7%3=−1 3 = -1 3=−1 ] [ 7 77%3=1 3 = 1 3=1 ]
2.一共会有50个测试点,每个点分值为2分。
因为测试点数较多,请oier们自觉地不要故意多次提交来卡评测机,出题人 edt 在这里表示由衷的感谢
数据范围
如果你不能作对所有点,请尝试获得部分分,所有数据都是随机生成
题解
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#define LL long long int#define REP(i,n) for (int i = 1; i <= (n); i++)#define fo(i,x,y) for (int i = (x); i <= (y); i++)#define Redge(u) for (int k = head[u]; k != -1; k = edge[k].next)using namespace std;const int maxn = 80005,maxm = 100005,INF = 1000000000;inline LL read(){LL out = 0,flag = 1;char c = getchar();while (c < 48 || c > 57) {if (c == '-') flag = -1; c = getchar();}while (c >= 48 && c <= 57) {out = out * 10 + c - 48; c = getchar();}return out * flag;}LL n,T,P,gmin,gmax,A[maxn],D[maxn];void init(){n = read(); T = read(); P = read(); gmin = read(); gmax = read();}void solve(){char cmd;LL l,r,x,sum,cnt,t;while (T--){cmd = getchar();while (cmd != 'A' && cmd != 'Q') cmd = getchar();l = read(); r = read();if (cmd == 'A'){x = read();D[l] = D[l] + x;D[r + 1] = D[r + 1] - x;}else {cnt = sum = 0;REP(i,n){sum = sum + D[i]; D[i] = 0;A[i] = A[i] + sum;if (i >= l && i <= r){t = A[i] * i % P;if (t >= gmin && t <= gmax) cnt++;}}printf("%lld\n",cnt);}}cnt = sum = 0;REP(i,n){sum = sum + D[i];A[i] = A[i] + sum;t = A[i] * i % P;if (t >= gmin && t <= gmax) cnt++;D[i] = cnt;}T = read();while (T--){l = read();r = read();printf("%lld\n",D[r] - D[l - 1]);}}int main(){init();solve();return 0;}
- 洛谷 U14472 数据结构【比赛】 【差分数组 + 前缀和】
- 前缀和与差分
- zzuoj-10471: 数列游戏 I(差分数组+前缀和)
- [BZOJ 2160] 拉拉队排练 (manacher+差分数组+前缀和)
- 【胡诌】区间问题与差分前缀和
- hdu5419 Victor and Toys 期望,差分前缀和
- hdu 5419 线段树 or 差分前缀和
- hdu 5452 Minimum Cut(树链剖分+差分前缀和)
- 【差分+前缀和】BZOJ1637: [Usaco2007 Mar]Balanced Lineup
- CF295A Greg and Array(差分+前缀和)
- BZOJ1303 [CQOI2009]中位数图 差分+前缀和
- 算法基础【3】差分与前缀和
- 差分数组
- 差分数组概述
- 对等差分数组
- 差分数组
- 差分数组
- 差分数组
- 直播行业回归理性 YY等平台规范管理显优势
- vue项目报错如下:(Emitted value instead of an instance of Error)
- Apache Commons / JDK 工具方法
- 开通博客第二天
- Python学习零散杂记(2017-10-28)
- 洛谷 U14472 数据结构【比赛】 【差分数组 + 前缀和】
- SSM的简单笔记
- “企业微信”安卓版应用宝今日独家首发
- e代测:基于笔试的RPO服务,解决人才招聘切肤之痛
- 接口1
- c++类主模板的模板参数的默认值对特化模板一样有效
- CSS命名和书写
- python学习之环境配置
- beego框架之orm的使用