洛谷 U14472 数据结构【比赛】 【差分数组 + 前缀和】
题目描述
蒟蒻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个询问的值
输入输出样例
复制
17 25 4098 310 2622
A 10 16 657212040
A 4 15 229489140
A 1 2 -433239891
A 3 12 532385784
A 10 17 56266644
A 8 10 10038874
A 6 9 13084764
A 4 5 -9206340
Q 2 8
A 2 4 -43223955
A 6 9 31478706
A 2 4 189818310
A 2 8 179421180
A 2 8 40354938
Q 8 14
A 3 6 57229575
A 6 13 132795740
A 2 17 14558022
A 14 15 -552674185
A 5 11 -1104138
Q 2 12
Q 1 14
A 3 9 524902182
A 8 12 114291440
A 3 7 107531442
1
11 12
复制
20 3 4317 1020 2232
A 8 15 -434078222
A 1 2 54988154
A 13 19 81757858
15
7 11
3 5
3 9
6 9
9 13
6 19
1 20
3 5
3 10
1 7
2 14
6 10
2 3
2 3
10 12
说明
样例说明
给出样例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 7
7%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 数据结构【比赛】 【差分数组 + 前缀和】的更多相关文章
- [洛谷P3948]数据结构 题解(差分)
[洛谷P3948]数据结构 Description 最开始的数组每个元素都是0 给出n,opt ,min,max,mod 在int范围内 A: L ,R ,X 表示把[l,R] 这个区间加上X(数组的 ...
- 【题解】洛谷P1315 [NOIP2011TG] 观光公交(前缀和+贪心)
次元传送门:洛谷P1315 思路 思路大概想到了 可是代码实现却没想到 所以参考题解了 D2T3的贪心果然有难度 我们考虑在每次用加速器有两种情况 到下一个点还需要等待:以后的时间就不再影响了 到下一 ...
- [洛谷P3948]数据结构
题目大意:有n个数,opt个操作,并给你md.min.max. 每种操作有以下两种:1.给一段区间加一个固定值.2.询问一段区间内满足$min\leq T*i\ mod\ md\leq max$(T是 ...
- A - Color the ball HDU - 1556 (差分数组+前缀和)
思路等引自博客 https://blog.csdn.net/johnwayne0317/article/details/84928568 对数组a[7]: a[0]=1; = d[0] a[1]=1; ...
- 洛谷P5108 仰望半月的夜空(后缀数组)
题意 题目链接 Sol warning:下面这个做法只有95分,本地拍了1w+组都没找到错误我表示十分无能为力 我们考虑每个串的排名去更新答案,显然排名为\(1\)的后缀的前缀一定是当前长度的字典序最 ...
- 题解——洛谷P1250 种树(差分约束)
一道看一眼就知道差分约束的题目 但是最短路spfa的时候注意松弛条件是 if(dis[u]+w[i]<dis[v[i]]) dis[v[i]]=dis[u]+w[i]; 不能写成 if(dis[ ...
- 洛谷P3948 数据结构——题解
题目传送 感觉这道题秀了我一地的智商... 审题没审好,没确定带修改的操作中询问的次数<=1000,且max和min都是事先给好.不变的.想了半天线段树.分块,却忘了最基础的暴力. 写不出题时先 ...
- 洛谷 P4143 采集矿石 后缀数组
题目背景 ZRQ 成功从坍塌的洞穴中逃了出来.终于,他看到了要研究的矿石.他想挑一些带回去完成任务. 题目来源:Zhang_RQ哦对了 \(ZRQ\) 就他,嗯 题目描述 ZRQ 发现这里有 \(N\ ...
- 洛谷3809 SA模板 后缀数组学习笔记(复习)
其实SA这个东西很久之前就听过qwq 但是基本已经忘的差不多了 嘤嘤嘤 QWQ感觉自己不是很理解啊 所以写不出来那种博客 QWQ只能安利一些别人的博客了 小老板 真的是讲的非常好 不要在意名字 orz ...
随机推荐
- python常用模块详解2
序列化模块补充: 1.json格式的限制,json格式的key必须是字符串数据类型 2.json格式的字符串必须是"" 如果数字是key,那么dump之后会强转成字符串数据类型 i ...
- Jmeter接口测试(九)授权
下面应该是jmeter的授权设置,但是由于本人目前对这块了解还不深,暂时写个标题,以后有时间再来补充,大家可以先看下一篇内容
- Appium + java截图方法
public static void takeScreenShot(AndroidDriver<WebElement> driver) { File screenShotFile = dr ...
- 各web服务器的特点和优势
1.Tomcat 和 Jetty 面向java语言 天生就是重量级的web服务器.性能一般 2.IIS 只能在windows平台运行,windows作为服务器在稳定性与其他一些性能上不如类unix操作 ...
- R-CNN学习总结
R-CNN是一个比较早期的用于目标检测方法,但却十分经典,在此结合论文对这一方法做一个总结. (写给小白:通过下图简单理解图像分类,图像定位,目标检测和实例分割) R-CNN方法提出的背景: 1.近1 ...
- 实现属于自己的TensorFlow(一) - 计算图与前向传播
前段时间因为课题需要使用了一段时间TensorFlow,感觉这种框架很有意思,除了可以搭建复杂的神经网络,也可以优化其他自己需要的计算模型,所以一直想自己学习一下写一个类似的图计算框架.前几天组会开完 ...
- [linux] centos搭建openvpn服务,脚本颁发/吊销证书 (转载+原创)
搭建过程转载:http://yestreenstars.blog.51cto.com/1836303/1429537 环境说明:服务端:CentOS 6.5_X64客户端:Windows 7 服务端配 ...
- 《JavaScript设计模式与开发实践》——第3章 闭包和高阶函数
闭包 变量的作用域和生存周期密切相关 高阶函数 函数可以作为参数被传递 函数可以作为返回值输出
- C++:const_cast的简单理解
前言:const_cast是我比较头疼的一个知识点,最近查阅了很多资料,也翻看了很多他人的博客,故在此将自己目前学习到的有关const_cast知识做一个简单的总结 一.什么是const_cast 简 ...
- 【每日scrum】NO.9
(1)这是我们冲刺的最后一天,晚上我们的团队进行了收尾工作:第一阶段的任务基本完成,软件主要实现了校园景点照片以及对应的介绍,查询最短路径,查询涉及相关景点的查询,查询全部路径,基本界面的设计,导航功 ...