莫队学习笔记(未完成QAQ】的更多相关文章

似乎之前讲评vjudge上的这题的时候提到过?但是并没有落实(...我发现我还有好多好多没落实?vjudge上的题目还没搞,然后之前考试的题目也都还没总结?天哪我哭了QAQ 然后这三道题我都是通过一道板子题来讲解的,分别是普通,带修,树上 普通莫队 首先总结一下,最简单的莫队,就是有很多询问,并且知道[l,r]的答案可以推出[l-1,r][l,r+1]这一类的,我们就可以通过不再重复计算同一个区间而节约效率 莫队好像最正统的是要用曼哈顿距离最小生成树的?但是太复杂辣所以一般都是直接用分块的 然后…
这几天感觉要学的要做的有点多,就偷了个懒没写笔记,赶紧补一下 莫队嘛,一个离线处理各种区间(或树上)询问的神奇算法 简单而言,按左端点排个序然后指针l,r递推就好了 复杂度证明貌似是不待修改的n^1.5,带修改的n^5/3(证明又与我何干呢) 这东西我只学了一天左右,感觉常规题没什么亮点,毒瘤起来就不知道了 然后我分享一下无修莫队和带修莫队的两道例题做法,回滚的话后面补吧 小z的袜子https://www.luogu.org/problemnew/show/P1494 抽到一样袜子的情况总和为 …
P1494 [国家集训队]小Z的袜子 题目描述 作为一个生活散漫的人,小\(Z\)每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小\(Z\)再也无法忍受这恼人的找袜子过程,于是他决定听天由命-- 具体来说,小\(Z\)把这\(N\)只袜子从\(1\)到\(N\)编号,然后从编号\(L\)到\(R\)(\(L\)尽管小\(Z\)并不在意两只袜子是不是完整的一双,甚至不在意两只袜子是否一左一右,他却很在意袜子的颜色,毕竟穿两只不同色的袜子会很尴尬. 你的任务便是告诉小\(Z\)…
回滚莫队例题. 这题的意思大概是 设 \(cnt_i\) 为 l ~ r 这个区间 \(i\) 出现的次数 求\(m\) 次询问 求 l~r 的 max {\(a_i\) * \(cnt_i\)} \(n\) , \(m\) 同阶 \(1e5\) 没有强制在线? 我们考虑普通的莫队?如果最大值在某一段,当你把指针移到另一段,这个答案就失效了. 所以考虑回滚莫队. 回滚莫队的做法是 按左端点所在的块排序 如果相同 按右端点排序 然后对于每个块求解.弄个右指针在块的最右边. 分类讨论一下 如果左右指…
树上莫队就是把莫队搬到树上-利用欧拉序乱搞.. 子树自然是普通莫队轻松解决了 链上的话 只能用树上莫队了吧.. 考虑多种情况 [X=LCA(X,Y)] [Y=LCA(X,Y)] else void dfs(int u) { sz[u] = 1 ; rev[st[u] = ++ cnt] = u ; for(int i = 0 ; i < G[u].size() ; i ++) { int v = G[u][i] ; if(v == fa[u]) { continue ; } fa[v] = u…
没有什么前言?直接进入正题qwq 俩俩异或 求最值: 建trie树 O(n)枚举每个数找这个数的最值,每次反走就成,还可以剪枝一波(如果在某位已经小于ans显然可以直接return? void Insert(int val) { ; <<;i>=;i>>=) { :; if(!ch[x][to]) ch[x][to]=++node; x=ch[x][to]; } } //建树,懒得说 int Que(int val) { ,bs=; <<;i>=;i>…
几百年前就说要学STL了然后现在还没动呢QAQ总算还是克服了懒癌决定学下QAQ 首先港下有哪几个vector listset map stack queue,大概就这些? 然后因为有几个基本操作每个都有实在太无聊了所以单独提出来在最前面讲解一下就是了qwq之后就只是列出来告诉你有这个操作qwq 基本操作 stl.begin() 返回开头,返回iterator O(1) stl.end() 返回尾端的下一个元素(注意是下一个鸭!),同返回iterator O(1) stl.size() 返回它的大…
[未完成]WebService学习第一天学习笔记[未完成]WebService学习第一天学习笔记…
题目传送门 今天看了分块,顺便把基本的莫队学习了一下. 莫队算法是一种离线算法,复杂度可以达到O((M+N)*Sqrt(N)); 对于询问区间的左端点分块,块内的右端点从小到大排列. 对区间进行偏移操作. 掌握一个思想基础:两个询问之间的状态跳转.如图,当前完成的询问的区间为[a,b],下一个询问的区间为[p,q],现在保存[a,b]区间内的每个颜色出现次数的sum[]数组已经准备好,[a,b]区间询问的答案Ans1已经准备好,怎样用这些条件求出[p,q]区间询问的Ans2? 考虑指针向左或向右…
莫队例题. 莫队学习:https://www.cnblogs.com/Paul-Guderian/p/6933799.html 本题 分子是sigma(c(sum[a[i]],2)),分母是sigma(l-r+1,2); 维护分子和即可. 莫队适用范围:离线,区间,区间转移到下一格O(1). #include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #include<…