[SDOI2019]快速查询——模拟】的更多相关文章

题目链接: [SDOI2019]快速查询 对于整个序列维护一个标记$(k,b)$表示序列的每个数的真实值为$k*a_{i}+b$(注意要实时维护$k$的逆元),并记录序列的和. 对于单点修改,将$a_{i}$修改为$val$,因为有序列标记,所以实际修改成$\frac{val-b}{k}$并开一个栈将这个位置压入栈中. 对于序列加和序列乘操作,直接修改标记与序列和即可,注意修改$k$时也要修改$b$. 对于序列赋值操作,将$k$赋成$0$,将$b$赋成$val$(即将操作看成先序列赋成$0$再序…
[SDOI2019]快速查询 [题目链接] 链接 [思路要点] 据说是 \(\text{SDOI2019}\) 最水的题 操作次数为 \(1e7\) 范围,显然要求每次操作 \(\mathcal{O}(1)\) 完成 并不需要任何数据结构维护 由于不同的操作数量为 \(1e5\) 级别,可以将所有涉及到的变量离散化出来,并且使用数组直接存储,其它的一些变量全程中值都相同,只需要一个变量记录 如果没有全体赋值的操作,只需要记录一个 \(A\) 和 \(B\) 以及每个数的初值,表示当前某个数的值是…
把有单点修改和查询的点离散进一个数组,然后单点修改直接改,记录一个修改时间t,维护一个sm表示这些离散的点的和,val表示出了离散点其他点的值,因为都是一样的所以只记录这一个值即可,记录ljlc为加法乘法的lazytag,整体加整体乘的时候像线段树一样改smljlc,还有修改val,整体赋值的时候把valsmljlc都初始化,记录一个赋值时间ti 单点查询的时候如果这个点的修改时间比当前赋值时间早就直接val,否则是数组值和lazytag操作一下,整体查询直接sm+val*has即可 那个求逆元…
点此看题面 大致题意: 有单点赋值.全局加法.全局乘法.全局赋值.单点求值.全局求和\(6\)种操作.现在给出操作序列,以及\(t\)对正整数\(a_i,b_i\).让你处理\(t*q\)次操作,每次为操作序列中的第\(((a_i+jb_i)\%q+1)\)个操作.输出询问答案和. 模拟 这是一道很水的模拟题吧. 容易发现所有操作都可以\(O(1)\)搞,因此直接\(O(tq)\)暴力即可. 就是打标记比较烦. 还有\(n\)比较大可以把操作的位置离散化. 代码 #include<bits/st…
题目链接 吐槽 竟然让\(nlog\)的做法卡过去了.. 思路 因为\(1 \le q \le 10^5\),所以可以先对每个标准操作,所操作的位置进行重标号.这样所有的下标都是在\(10^5\)以内的. 乘和加操作都可以写成\(kx+b\)的形式.然后对于这些操作维护一个前缀.然后就可以得到一个区间内的操作了. 区间查询我们只要找个\(TOT\)来维护一下当前的所有元素和,就行了. 单点查询,观察其上次赋值的时间.如果早于集体赋值,那么就输出当前大多数的值. 否则就将其上次赋的值乘上从上次赋值…
原题传送门 神鱼说这道题是强制离线(smog 我们珂以把被单点修改,单点查询的点单独拿出来处理,把每个数表示成\(mul*x+plus\) 初始状态下\(mul=1,plus=0\) 操作1:在总和中减去\(val[pos[x]]\)(\(pos\)表示离散化后的位置,\(val\)表示特殊点的数值):将\(val[pos[x]]\)变成\(\frac{val_{new}-plus}{mul}\):如果\(pos[x]\)不在非零位置的栈中,将\(pos[x]\)压入栈中:在总和中加上\(val…
链接 vijos 思路 虽然询问1e7,但他询问很有意思,所以最多修改1e5个. 先把他们修改的点缩小到1e5之内并没有什么影响. 然后维护mul和add.不修改很好弄,修改的点可以弄点式子加加减减弄出来,逆元线性推也是可以的. 总的复杂度\(O(qlogq+tq+mod)\) 总结 我考场上连\(O(n^3)\)都写不对,回来不到一个小时就A了?浮躁! 其实已经写了三遍了..码力急需加强 代码 #include <bits/stdc++.h> #define debug(x) cerr &l…
思路:...乱搞数据结构?? 提交:1次 题解: 观察到除了单点就是全局操作,所以我们维护一个全局加法标记add和乘法标记mul和答案sum. 单点修改时,比如我们要把 \(pos\) 位置改成 \(y\) ,实际上我们应该储存 \(x\) , 且 \(y=mul*x+add\) ,即我们储存的是逆标记操作后的值. 同时要注意全体赋值后标记和 unordered_map 的清空. 代码:自带大常数 #include<bits/stdc++.h> #define ll long long #de…
时间:2017/5/15 作者:李国君 题目:快速查询List中指定的数据 背景:当List中保存了大量的数据时,用传统的方法去遍历指定的数据肯定会效率低下,有一个方法就是类似于数据库查询那样,根据索引直接提取数据.      项目中遇到的软件卡顿的现象,其中一部分原因是因为数据量大的原因,所以有必要提高数据查询的速度.      这里先展示一下模拟的的方法:假设List集合中有500000个点,每个点都有他的属性值xIndex(x坐标),yIndex(y坐标),text(描述),相当于1000…
Mysql 常用 sql 语句 - 快速查询 1.mysql 基础 1.1 mysql 交互         1.1.1 mysql 连接             mysql.exe -hPup                 h:host,    default: localhost                 P:port,    default: 3306                 u:username                 p:password(如果需要的话)    …