题意
输入一个nm的矩阵,矩阵的每一个元素都是一个整数,然后有q个询问,每次询问一个子矩阵的权值。矩阵的权值是这样定义的,对于一个整数x,如果它在该矩阵中出现了p次,那么它给该矩阵的权值就贡献p2。
做法
题意描述是标准的莫队。但因为是矩阵,那就是二维莫队咯。 考虑一下,应该让块紧凑一些,转移复杂度会比较小,因此这个的分块就相当于横切几刀竖切几刀分成的块。 类比序列的莫队,位置所在的块为 转移的时候也很简单,类比序列先扩再缩就行了。
CODE
1 |
|
输入一个nm的矩阵,矩阵的每一个元素都是一个整数,然后有q个询问,每次询问一个子矩阵的权值。矩阵的权值是这样定义的,对于一个整数x,如果它在该矩阵中出现了p次,那么它给该矩阵的权值就贡献p2。
题意描述是标准的莫队。但因为是矩阵,那就是二维莫队咯。 考虑一下,应该让块紧凑一些,转移复杂度会比较小,因此这个的分块就相当于横切几刀竖切几刀分成的块。 类比序列的莫队,(i,j)位置所在的块为([√ni−1]+1−1)√m+[√mj−1]+1 转移的时候也很简单,类比序列先扩再缩就行了。
1 | #include <cstdio> |