黑河市网站建设_网站建设公司_营销型网站_seo优化
2026/1/15 20:14:33 网站建设 项目流程

T1 算面积(matrix)

题意简述

给定 \(n \times m\) 的矩阵,处理 \(q\) 次询问,每次查询一个子矩形的权值和。

其中,每一行都是一个长度不超过 \(100\) 的序列重复循环构成的。

数据范围:\(1 \leq n,m,q \leq 10^5\)

题解

容易想到二维前缀和,于是题目转化为 \((1, 1)\)\((a, b)\) 的权值和。

注意到循环节长度的种类不会很多,因此不妨枚举循环节长度的种类。

这样做的好处在于确定种类之后,同类循环节都是全部和乘上同样次数再加相同一段的权值和。

因此,我们用链表状物维护循环节种类,然后令 \(s_{i,j,k}\) 表示前 \(i\) 行、循环节长度为 \(j\) 的行中,前 \(k\) 个的和,的和。

但这样直接做复杂度是 \(O(nl^2)\) 的,需要优化(其中 \(l\) 表示循环节种类,题中取 \(100\))。

考虑前 \(i\) 行、循环节长度为 \(j\) 这个条件,实际上均摊是 \(\mathcal{O}(n)\) 的,因此使用 vector + 链表状物即可完美解决。

总时间复杂度 \(\mathcal{O}((n + q)l)\),大概是 \(\mathcal{O}(2 \times 10^7)\),可以通过。

参考代码:

咕咕咕,数据修好了再补。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询