以下内容未验证,有错请指正... 设块大小为T,则块数为$\frac{n}{T}$ 将询问分为$(\frac{n}{T})^2$块(按照左端点所在块和右端点所在块分块),同块内按时间从小到大依次处理 1.左/右端点块内移动总代价:$q*T$ 2.时间的移动总代价:$(\frac{n}{T})^2*n$ 总复杂度:$q*T+\frac{n^3}{T^2}$ 好吧,事实上一般不会这么写... 一般只需要把询问按三个关键字(优先级:左端点所在块>右端点所在块>时间)排序,然后在任意两个询问间转移 一…
传送门 总算会树形莫队了…… 上次听说树形莫队是给树分块,实在看不懂.然后用括号序列的方法做总算能弄明白了 先说一下什么是括号序列,就是在$dfs$的时候,进入的时候记录一下,出去的时候也记录一下 拿样例为例,它的括号序列就是$12443321$ 那么我们扩展区间对答案的贡献是可以$O(1)$计算的 假设扩展出的点的颜色是$c$,那么变化量为$val_c*worth_{cnt_c+1}$ 因为括号序列它在扩展的时候会把子树里的扫两遍,那么就可以把子树中的答案去掉了 怎么去掉呢?记录一个$vis$…
You come home and fell some unpleasant smell. Where is it coming from? You are given an array a. You have to answer the following queries: You are given two integers l and r. Let ci be the number of occurrences of i inal: r, where al: r is the subarr…
题目链接:http://codeforces.com/problemset/problem/940/F 题目: 题意:求次数的mex,mex的含义为某个集合(如{1,2,4,5})第一个为出现的非负数(3),注意是次数,而不是某个元素的mex. 思路:这一题数据太大,所以我们首先得进行一次离散化.用一个num2来记录每个次数出现次数,num1来记录次数出现次数,最后用一个for循环来求出mex. 代码实现如下: #include <set> #include <map> #incl…
首先显然应该把数组离散化,然后发现是个带修莫队裸题,但是求mex比较讨厌,怎么办?其实可以这样求:记录每个数出现的次数,以及出现次数的出现次数.至于求mex,直接暴力扫最小的出现次数的出现次数为0的正整数,就一句话,这样看似会超时,实际上是O(√n)的复杂度.为什么?假设存在出现1,2,...,x的出现次数,则Σi(1<=i<=x)<=n,即x*(x+1)<=2*n,所以x至多是√n级别.很多人再把出现次数分块,根本没必要.然后考虑把数组分块的块大小,每次移动左指针,为O(n*块大…
Codeforces 题目传送门 & 洛谷题目传送门 震惊!我竟然独立切掉了这道 *3100 的题! 虽然此题难度的确虚高,感觉真实评分也就 2800~2900 罢.但感觉还是挺有成就感的( 注意到题目中所询问的那坨东西基于每个数在区间中出现的次数,因此此题必不可少的一个步骤就是求出每个数的出现次数 \(cnt_x\),这个可以用带修莫队在 \(n^{5/3}\) 的时间内求出,这里就不再赘述了. 接下来考虑怎样计算答案,这也是本题的难点所在.我们将所有 \([l,r]\) 中出现次数非零的数的…
3052: [wc2013]糖果公园 Time Limit: 200 Sec  Memory Limit: 512 MBSubmit: 883  Solved: 419[Submit][Status][Discuss] Description Input Output Sample Input Sample Output 84 131 27 84 HINT Source Solution 树上带修莫队 本质还是树上莫队,详情可以转 BZOJ-3757苹果树 但是这里需要修改,就需要一些特殊的地方…
题目链接 [BZOJ传送门] [洛谷传送门] 题目大意 单点修改,区间查询有多少种数字. 解法1--树套树 可以直接暴力树套树,我比较懒,不想写. 稍微口胡一下,可以直接来一个树状数组套主席树,也就是待修的主席树. 然后查询的时候,两个根节点减一下就可以了. 解法2--带修莫队 这是带修莫队的模板题. 最简单的莫队是是一个二元组\((l,r)\),这里引入了一个新的参数,变成了三元组\((l,r,t)\),\(t\)所表示的是在这个查询最前面的哪一个修改的编号. 然后我们这个\(t\)当做第三关…
原文链接https://www.cnblogs.com/zhouzhendong/p/BZOJ2120.html 题目传送门 - BZOJ2120 题意 给定一个长度为 $n$ 的序列 $a$ ,有 $m$ 次操作,每次操作可能是如下两种类型之一: 1. 询问区间不同值的个数. 2. 修改一个 $a_i$ . 对于每一次询问,输出结果. $n,m\leq 10000,\ \ \ \ 1\leq a_i\leq10^6$ 题解 带修莫队裸题. 打错一个变量找了20分钟. 代码 #include <…
原文链接https://www.cnblogs.com/zhouzhendong/p/BZOJ3052.html 题目传送门 - BZOJ3052 题目传送门 - UOJ#58 题意 给定一棵树,有 $n$ 个节点.有 $m$ 种颜色,第 $i$ 个节点的颜色为 $c_i$ . 给定参数 $v_{1},v_2,\cdots,v_m$ 和 $w_1,w_2,\cdots ,w_n$ ,具有以下意义: 第 $i$ 次遇到颜色为 $j$ 的节点,新得到的收益为 $v_{j}\times w_i$ .…