题目大意:有n个数,opt个操作,并给你md、min、max。

每种操作有以下两种:1.给一段区间加一个固定值。2.询问一段区间内满足$min\leq T*i\ mod\ md\leq max$(T是当前的数,i是当前数的下标)的数的个数。

在这opt个操作里,询问不超过1000个。

这之后还有final($<10^7$)个询问(同上面的询问),保证这些询问中间没有修改操作。

要你实现这些操作。

解题思路:一开始被这些巨大的数据唬住了,经过思考看了标程后突然发现并不是很难。

对于区间和操作,很容易想到差分解决,但中间还有询问操作,怎么办?

题目说中间最多1000个询问,而n最大才80000,对于每一个询问,都扫描一遍差分数组的话,不考虑常数则要执行大约80000000次操作。

但标程告诉我这样是可以卡过去的(洛谷神评测机)。

再来考虑后面的询问,由于没有了修改操作,我们可以维护一个前缀和,来实现$O(1)$询问。

然后就玄学地卡了过去。

C++ Code:

#include<cstdio>
#include<cctype>
#include<cstring>
#define ll long long
int n,opt,mod,min,max,l,r,b[80003];
ll a[80003];
char c;
inline int readint(){
char c=getchar();
bool b=false;
for(;!isdigit(c);c=getchar())b=c=='-';
int d=0;
for(;isdigit(c);c=getchar())
d=(d<<3)+(d<<1)+(c^'0');
return b?-d:d;
}
inline void putint(int p){
if(p==0){
putchar('0');
putchar('\n');
return;
}
int w=1;
while(w<=p)w*=10;w/=10;
while(w){
putchar(p/w+'0');
p%=w;
w/=10;
}
putchar('\n');
}
int main(){
n=readint(),opt=readint(),mod=readint(),min=readint(),max=readint();
memset(a,0,sizeof a);
while(opt--){
for(c=getchar();!isalpha(c);c=getchar());
l=readint(),r=readint();
if(c=='A'){
int num=readint();
a[l]+=num,a[r+1]-=num;
}else{
int cnt=0;
ll sum=0;
for(int i=1;i<=r;++i){
sum+=a[i];
if(i>=l)cnt+=(int)(sum%mod*i%mod>=min&&sum%mod*i%mod<=max);
}
putint(cnt);
}
}
b[0]=0;
ll sum=0;
for(int i=1;i<=n;++i){
sum+=a[i];
b[i]=b[i-1]+(int)(sum%mod*i%mod>=min&&sum%mod*i%mod<=max);
}
for(int final=readint();final--;){
l=readint(),r=readint();
putint(b[r]-b[l-1]);
}
return 0;
}

[洛谷P3948]数据结构的更多相关文章

  1. [洛谷P3948]数据结构 题解(差分)

    [洛谷P3948]数据结构 Description 最开始的数组每个元素都是0 给出n,opt ,min,max,mod 在int范围内 A: L ,R ,X 表示把[l,R] 这个区间加上X(数组的 ...

  2. 洛谷P3948 数据结构——题解

    题目传送 感觉这道题秀了我一地的智商... 审题没审好,没确定带修改的操作中询问的次数<=1000,且max和min都是事先给好.不变的.想了半天线段树.分块,却忘了最基础的暴力. 写不出题时先 ...

  3. 洛谷 U14472 数据结构【比赛】 【差分数组 + 前缀和】

    题目描述 蒟蒻Edt把这个问题交给了你 ---- 一个精通数据结构的大犇,由于是第一题,这个题没那么难.. edt 现在对于题目进行了如下的简化: 最开始的数组每个元素都是0 给出nnn,optopt ...

  4. 洛谷P3676 小清新数据结构题 【树剖 + BIT】

    题目链接 洛谷P3676 题解 我们先维护\(1\)为根的答案,再考虑换根 一开始的答案可以\(O(n)\)计算出来 考虑修改,记\(s[u]\)表示\(u\)为根的子树的权值和 当\(u\)节点产生 ...

  5. 洛谷 P3676 - 小清新数据结构题(动态点分治)

    洛谷题面传送门 题目名称好评(实在是太清新了呢) 首先考虑探究这个"换根操作"有什么性质.我们考虑在换根前后虽然每个点的子树会变,但整棵树的形态不会边,换句话说,割掉每条边后,得到 ...

  6. 洛谷P1198 [JSOI2008]最大数

    P1198 [JSOI2008]最大数 267通过 1.2K提交 题目提供者该用户不存在 标签线段树各省省选 难度提高+/省选- 提交该题 讨论 题解 记录 最新讨论 WA80的戳这QwQ BZOJ都 ...

  7. 洛谷4月月赛R2

    洛谷4月月赛R2 打酱油... A.koishi的数学题  线性筛约数和就可以\(O(N)\)了... #include <iostream> #include <cstdio> ...

  8. 洛谷P3369 【模板】普通平衡树(Treap/SBT)

    洛谷P3369 [模板]普通平衡树(Treap/SBT) 平衡树,一种其妙的数据结构 题目传送门 题目描述 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 插入x数 删除 ...

  9. 洛谷P4180 [Beijing2010组队]次小生成树Tree(最小生成树,LCT,主席树,倍增LCA,倍增,树链剖分)

    洛谷题目传送门 %%%TPLY巨佬和ysner巨佬%%% 他们的题解 思路分析 具体思路都在各位巨佬的题解中.这题做法挺多的,我就不对每个都详细讲了,泛泛而谈吧. 大多数算法都要用kruskal把最小 ...

随机推荐

  1. servlet缺省路径

    servlet缺省路径 servlet的缺省路径(<url-pattern>/</url-pattern>)是在tomcat服务器内置的一个路径.该路径对应的是一个Defaul ...

  2. Pyhton学习——Day46

    # 数据库:存储数据的仓库# 数据库更多的是安全.备份# 客户端取服务端的数据实际都是从服务端的内存中抓取数据# 数据库管理系统软件# 数据库管理系统(Database Management Syst ...

  3. Day 07 -02 拷贝 浅拷贝 深拷贝

    必考 存一个值还是多个值 一个值:整型/浮点型/字符串 多个值:列表/元祖/字典/集合 有序or 无序 有序:字符串/列表/元祖 无序:字典/集合 可变or 不可变 可变:列表/字典/集合 不可变:整 ...

  4. Extjs win

    //创建window var win = Ext.create("Ext.window.Window", { id: "myWin", title: " ...

  5. HDU 2604 Queuing( 递推关系 + 矩阵快速幂 )

    链接:传送门 题意:一个队列是由字母 f 和 m 组成的,队列长度为 L,那么这个队列的排列数为 2^L 现在定义一个E-queue,即队列排列中是不含有 fmf or fff ,然后问长度为L的E- ...

  6. js 事件监听,执行某操作

    <script language=javascript> var ie; var firefox; if (document.all) ie = true; else ie = false ...

  7. Windows系统环境变量、JAVA环境变量配置以及JVM加载过程

    一:用户变量和系统变量的区别 右击我的电脑.属性.高级系统设置.环境变量. 对话框的上面为Administrator的用户变量,对话框的下面为系统变量.我们所说的环境变量一般指系统环境变量,对所有用户 ...

  8. 2015 Multi-University Training Contest 4 hdu 5334 Virtual Participation

    Virtual Participation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Ot ...

  9. PHP中对hmac_sha1签名算法的实现方法

    最近研究网宿云文档API,其中用到了一种叫hmac_sha1的签名算法: HMAC-SHA1: HMAC是哈希运算消息认证码 (Hash-based Message Authentication Co ...

  10. Linux下基于多线程的echo

    准备开始写一些Linux 下网络编程以及多线程的blog,就从这个简单的echo程序开始吧. 在echo的服务端使用多线程与客户进行通信,可以实现一个服务端程序同时连接多个客户的功能.那么,到底在服务 ...