哈希冲突
题意: 求 ∑ i = 0 i ∗ x + y < = n a [ i ∗ x + y ] \sum_{i = 0}^{i*x+y<=n} a[i*x+y] ∑i=0i∗x+y<=na[i∗x+y]为多少,单点修改
根号分治, 首先发现数据范围都为 1 e 5 1e5 1e5级别的,考虑如何入手这道题
对于查询
1.发现如果 x > n x > \sqrt{n} x>n,那么暴力调的时间复杂度最多为 n n n\sqrt{n} nn,
2.如果 x < n x < \sqrt{n} x<n,我们发现可以进行预处理, f [ i ] [ j ] f[i][j] f[i][j]表示 m o d i mod i modi,为 j j j的 s u m sum sum, n n n\sqrt{n} nn预处理,
对于修改
情况一 : 暴力修改
情况二 : 暴力修改
最差时间复杂度 O ( n n l o g n ) O(n\sqrt{n}log_n) O(nnlogn)
Time to Raid Cowavans
和上一题一模一样,只是规定了一个起点,前缀作差+差分即可
Array Queries
相同的处理方法
[ARC150B] Make Divisible
整除分块
由于要计算 k ( B + Y ) = = A + X k(B + Y) == A + X k(B+Y)==A+X, ( X + Y ) m i n (X +Y)_{min} (X+Y)min
可以得到 k = ⌈ A B + Y ⌉ k=\left \lceil \frac{A}{B+Y} \right \rceil k=⌈B+YA⌉
由整除分块可得,最多有 n \sqrt{n} n个不同的 k k k
由于