![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
【算法】分块与莫队
文章平均质量分 90
cz_xuyixuan
这个作者很懒,什么都没留下…
展开
-
【BZOJ3052】【UOJ58】【WC2013】糖果公园
【题目链接】BZOJUOJ【思路要点】维护一个糖果集合,支持加入一个糖果,删除一个糖果,显然,我们可以容易地在\(O(1)\)的时间内实现这些操作。考虑使用莫队算法。对树分块,运行树上带修莫队即可。实际上,这是一道树上带修莫队的模板题,相当于将带修莫队、树上莫队和树分块合为一体。时间复杂度\(O(N^{\frac{5}{3}})\)。【代码】#includeusing namespace std原创 2018-01-19 11:21:15 · 377 阅读 · 0 评论 -
【校内训练2019-07-09】积性函数求和
【思路要点】所求的式子是约数和的形式,考虑枚举一个约数 iii ,计算其被算了多少次,则答案为∑i=1N∑j=1⌊Ni⌋[gcd(i,j)=1]i=∑i=1N∑j=1⌊Ni⌋∑g∣i,g∣jμ(g)i=∑g=1N∑i=1⌊Ng2⌋i⌊Ng2i⌋\sum_{i=1}^{N}\sum_{j=1}^{\lfloor\frac{N}{i}\rfloor}[gcd(i,j)=1]i\\=\sum_{...原创 2019-07-09 14:35:05 · 310 阅读 · 0 评论 -
【2019 江苏省队集训】Day2 解题报告
【T1】 朝夕相处【思路要点】记不考虑旋转同构的答案为 G(N)G(N)G(N),答案为F(N)F(N)F(N),由BurnsideBurnsideBurnside引理,有F(N)=∑i∣NG(i)φ(Ni)NF(N)=\frac{\sum_{i\mid N}G(i)\varphi(\frac{N}{i})}{N}F(N)=N∑i∣NG(i)φ(iN)剩余问题在于计算 G(N)G(...原创 2019-07-03 13:30:13 · 939 阅读 · 0 评论 -
【LOJ2572】「ZJOI2017」字符串
【题目链接】点击打开链接【思路要点】分块维护前缀哈希值,则我们可以做到 O(N)O(\sqrt{N})O(N) 修改, O(LogN)O(LogN)O(LogN) 查询两个后缀的 LcpLcpLcp 。用线段树维护子串,记录在原串中对应的范围,以及可能成为最小后缀的起始点集。一个显然的事实是,考虑不断向字符串后方添加字符的过程,令当前字符串已有 kkk 位,考虑 i&...原创 2019-06-21 20:03:01 · 705 阅读 · 1 评论 -
【CodeForces】CodeForces Round #502 (Div. 1 + Div. 2) 题解
【比赛链接】 点击打开连接 【题解链接】 点击打开链接 **【A】**The Rank 【思路要点】 按照题意模拟。 时间复杂度O(N)O(N)O(N)。 【代码】 #include<bits/stdc++.h>using namespace std;const int MAXN = 100...原创 2018-08-13 15:33:05 · 304 阅读 · 0 评论 -
【CodeForces】CodeForces Round #477 (Div. 1 + Div. 2) 题解
【比赛链接】Div. 1Div. 2【题解链接】点击打开链接【Div.2 A】Mind the Gap【思路要点】从小到大枚举答案,检查合法性。时间复杂度\(O(Ans*N)\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 100005;template <typename T> vo...原创 2018-05-07 20:04:26 · 1596 阅读 · 1 评论 -
【BZOJ3509】【CodeChef】COUNTARI
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 200005#define MAXV 30005#define MAXM 405#define P acos(-1)template <typename T> void read(T &am...原创 2018-05-20 20:25:58 · 210 阅读 · 0 评论 -
【BZOJ4486】【JSOI2015】串分割
【题目链接】点击打开链接【思路要点】倍长字符串,求出其后缀数组,并保留后缀数组中值在\(N\)以内的元素,这些即是环形字符串后缀排序的结果。答案的位数是已知的,为\(\lfloor\frac{N-1}{K}\rfloor+1\)。从小到大枚举每一个答案,问题转化成能否将字符串从当前位置开始分成至多\(K\)段使得每一段小于当前答案。这个问题显然可以\(O(N)\)贪心,只要使得每次取的字符串在不超...原创 2018-04-18 16:01:26 · 358 阅读 · 0 评论 -
【BZOJ4850】【JSOI2016】灯塔
【题目链接】点击打开链接【思路要点】对于每个询问,本质不同的\(\sqrt{|i-j|}\)只有\(O(\sqrt{N})\)级别。因此,我们在询问时根据这一点将序列分成\(O(\sqrt{N})\)个区间,分别查询每个区间的最大值即可。由于每个区间的长度也是\(O(\sqrt{N})\)级别的,我们并不需要记录一个ST表,只需要暴力预处理每个点向后\(1\)至\(K\)个数的最大值即可,其中\(...原创 2018-04-11 15:52:08 · 313 阅读 · 0 评论 -
【BZOJ4540】【HNOI2016】序列
【题目链接】点击打开链接【思路要点】询问一个区间内不方便用线段树维护信息,可离线,考虑莫队。这样的话,我们希望支持快速询问\(f(l,r)=\sum_{i=l}^{r}Min_{j=l}^{i}\{a_i\}\)和\(g(l,r)=\sum_{i=l}^{r}Min_{j=i}^{r}\{a_j\}\)。用单调栈处理出每个数向左/向右第一个小于它的数,并倍增。询问时在倍增数组上二分,可以得到\(O...原创 2018-03-20 19:57:46 · 235 阅读 · 0 评论 -
【BZOJ4537】【HNOI2016】最小公倍数
【题目链接】点击打开链接【思路要点】首先对所有边按照\(A\)值排序,并分块。对于每个块,我们处理\(A\)值在该块内的询问。假设我们正在处理第\(i\)块,那么我们将第1到\(i-1\)块的边取出,并按\(B\)排序,然后按\(B\)从小到大的顺序处理本块内需要处理的询问。当处理一个询问时,先加入\(B\)值比它小的边,用并查集维护联通性与联通块内\(A\)和\(B\)的最大值。然后我们可能要额...原创 2018-03-20 15:42:01 · 303 阅读 · 0 评论 -
【BZOJ2002】【HNOI2010】Bounce 弹飞绵羊
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 200005int n;struct LinkCutTree { struct Node { bool rev; int father, child[2], size, up; }; Node...原创 2018-03-14 13:48:29 · 254 阅读 · 0 评论 -
【CodeForces472G】Design Tutorial: Increase the Constraints
【题目链接】点击打开链接【思路要点】先写一发bitset交上去试试,时间复杂度\(O(\frac{NQ}{w})\),其中\(w=64\),结果是T了,大概要12s才能跑出满数据。正解是分块FFT,令分块大小为\(Size\),进行\(O(\frac{N}{Size})\)次FFT,处理出\(O(\frac{N}{Size})\)个\(T\)的后缀与\(S\)的每个长度为\(|T|\)的子串能够匹...原创 2018-03-14 10:44:17 · 371 阅读 · 0 评论 -
【USACO】2018 January Contest, Platinum题解
【比赛经历】先看完题,准备按顺序做。T1先写了一个\(O(NK^{2})\)的DP,交一发,得分8/10。仔细一想,\(O(NK)\)的做法好像可行,但稍微有点难写,决定卡常+骗分。把Max换成If语句,给循环变量加上人register,得分9/10。4次提交后,发现T的那个测试点满足\(K≥90\)、\(N≥80000\),针对性地骗分后,得到满分。此时时间刚过1h。T2想了一段原创 2018-02-07 10:45:13 · 1065 阅读 · 0 评论 -
【CodeForces】CodeForces Round #466 (Div. 2) 题解
【比赛链接】点击打开链接【题解链接】点击打开链接【A】Points on the line【思路要点】枚举最后的区间,用前/后缀和计算区间外的点数。时间复杂度\(O(N+Max\{x_i\})\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 105;template <typename T&...原创 2018-02-26 10:24:08 · 246 阅读 · 0 评论 -
【CodeForces1202F】You Are Given Some Letters...
【题目链接】点击打开链接【思路要点】枚举周期 ppp ,考虑如何判断其是否合法。记 N=a+b,r=⌊Np⌋N=a+b,r=\lfloor\frac{N}{p}\rfloorN=a+b,r=⌊pN⌋ ,那么最后一段有 N%rN\% rN%r 个字符,其中至少有 a%ra\% ra%r 个 AAA , b%rb\%rb%r 个 BBB ,因此一个必要条件为 N%r≥a%r+b%...原创 2019-08-11 17:06:26 · 423 阅读 · 0 评论