[洛谷P4887]第十四分块(前体)】的更多相关文章

题面 传送门 题解 lxl大毒瘤 我们考虑莫队,在移动端点的时候相当于我们需要快速计算一个区间内和当前数字异或和中\(1\)的个数为\(k\)的数有几个,而这个显然是可以差分的,也就是\([l,r]\)的询问可以拆成\([1,r]-[1,l-1]\) 我们考虑莫队移动指针的过程,以\([l,r]\)移动左指针到\(p\)为例,要减去的答案是\(l\)和\([1,r]-[1,l-1]\),\(l+1\)和\([1,r]-[1,l]\),...,总的来说,我们我们要对于\([1,r]\)这个前缀计算…
题目大意: 给定一个长度为\(n\)的序列\(a\),\(k\),和\(m\)次询问. 每次询问给定区间\([l,r]\),求满足\(l\leqslant i< j\leqslant r\)且\(\_\_ \text{builtin}\_ \text{popcount} (a_i\oplus a_j)=k\)的数对\((i,j)\)的个数. 40MB. 解题思路: 二次离线莫队lxl黑科技. 对于一次询问\([l,r]\),我们考虑右端点往右移动一格后变成\([l,r+1]\),多出来的数其实是…
题意: 给你一个序列,每次询问l,r问多少个a[i]^a[j]有k个1,k固定. 序列长度1e5,a[i]<=2^14 时限1s,空间40M 题解: 个人其实开始没什么思路,看了题解也好久,题解写得十分差,让人看了一头雾水. 首先想法就是莫队, 我们想暴力的话,可以把每个时间的状态考虑,res[i][j]表示前1-i个,和j xor 有k个1的个数 这样前后维护两个,就解决了. 空间限制怎么办,考虑莫队复杂度是N √M,就缩小了空间,就ok1了.…
题面传送门 莫队二次离线 mol ban tea,大概是这道题让我第一次听说有这东西? 首先看到这类数数对的问题可以考虑莫队,记 \(S\) 为二进制下有 \(k\) 个 \(1\) 的数集,我们实时维护一个桶 \(cnt_i\) 表示当前区间中值为 \(i\) 的数有多少个,那么加入一个数 \(v\) 的时候,答案会增加 \(\sum\limits_{y\in S}cnt_{y\oplus v}\),这样暴力莫队复杂度是 \(n\sqrt{n}\dbinom{14}{k}\),如果你过了我请你…
sto \(lxl\) orz 考虑莫队,每次移动端点,我们都要询问区间内和当前数字异或有 \(k\) 个 \(1\) 的数字个数 询问 \([l,r]\) 可以再次离线,拆成询问 \([1,l-1]\) 和 \([l,r]\) 然后考虑莫队要移动 \([l,r]\) 的 \(l\) 到 \(p\) 假设 \(p>l\) 那么相当于每次询问 \(a[l]\) 和 \([l+1,r]\),然后 \(++l\) 直到 \(l=p\) 即每次询问 \(a[l]\) 和 \([1,l]\) ,\(a[l…
题目链接 题意 区间两数异或在二进制下有 \(k\) 个 \(1\) 的对数. Sol 普通莫队的话,如果要实时维护好区间内的答案需要支持区间对一个数求答案. 直接做不是很好做,容易发现其实这也就是一个区间询问.那么可以把莫队中要求的东西再次离线下来. 我们把上述询问拆成前缀相减的形式,这样我们要做到就是多次询问一个前缀对一个数的答案. 由于在数据范围下二进制下有 \(k\) 个 \(1\) 的数并不是太多,我们可以直接从前往后做,遇到一个数 \(x\) 则把 \(x\oplus number(…
莫队--------一个优雅的暴力 莫队是一个可以在O(n√n)内求出绝大部分无修改的离线的区间问题的答案(只要问题满足转移是O(1)的)即你已知区间[l,r]的解,能在O(1)的时间内求出[l-1,r][l+1,r][l,r-1][l,r+1]的解.否则时间复杂度为O(kn√n)(k为转移的时间) 以下默认转移是O(1)的 显然,我们如果得知[l,r]的解,我们便可以在O(|l2-l|+|r2-r|)的时间内求出[l2,r2]的解 那么,对于q个询问(假设q与n同数量级),我们如果能找到一个合…
题目链接:洛谷 题目大意:定义 $f(x)=\prod^n_{i=1}(k_i+1)$,其中 $x$ 分解质因数结果为 $x=\prod^n_{i=1}{p_i}^{k_i}$.求 $\sum^r_{i=l}f(i)\ mod\ 998244353$. $1\leq l\leq r\leq 1.6\times 10^{14}$. 阅读以下内容前请先学会前置技能整除分块 先分析一下 $f(x)$ 的本质. (读者:不要啰嗦来啰嗦去的好吧!这明显是 $x$ 的约数个数吗!是不是想拖延时间?) 好好好…
洛谷P3396 哈希冲突 题目背景 此题约为NOIP提高组Day2T2难度. 题目描述 众所周知,模数的hash会产生冲突.例如,如果模的数p=7,那么4和11便冲突了. B君对hash冲突很感兴趣.他会给出一个正整数序列value[]. 自然,B君会把这些数据存进hash池.第value[k]会被存进(k%p)这个池.这样就能造成很多冲突. B君会给定许多个p和x,询问在模p时,x这个池内数的总和. 另外,B君会随时更改value[k].每次更改立即生效. 保证1<=p<n1<=p&l…
传送门 虽然洛谷数据水,然而咱最终还是没有卡过uoj上的毒瘤数据-- 神tm全uoj就3个人过了这题-- 首先,每个数最多被开根\(6\)次,开到\(1\)之后就别管它了,把它用并查集连到它父亲上 它每次要走\(k\)步,我们可以对\(k\)分类讨论,如果\(k\)比较大就直接暴力跳,否则建\(k\)棵树,每次树剖+线段树维护 然而我只会暴力跳了-- //minamoto #include<bits/stdc++.h> #define R register #define ll long lo…