P1036星脉聚流光energy

时间限制 1000 ms内存限制 512 MiB通过率 —
显示算法标签数论 · 容斥 · 莫比乌斯反演 · 欧拉函数

【题目背景】

沿着重新显现的遗道前进后,分散的探索队在一座巨大的能源层会合。CodeDay 发现沉寂已久的星脉仍在输送微弱流光,只要计算出汇集过程中的损失,便可以安全地重新启动遗迹核心。

【题目描述】

探索队抵达时,能源层中的大部分纹路仍然黯淡。CodeDay 沿着石台逐一唤醒节点,流光随之排列成整齐的方格。为了记录每一处星脉的位置,CodeDay 以遗迹核心为原点建立了平面直角坐标系。

遗迹核心位于 (0,0)(0,0)。能源层中共有 nn 列能量节点,每列包含 mm 个节点。对于所有满足 1xn1\leq x\leq n1ym1\leq y\leq m 的整数坐标 (x,y)(x,y),该位置恰好存在一个能量节点。

要让遗迹核心重新运转,CodeDay 需要依次汇集每个能量节点中残留的流光。汇集位于 (x,y)(x,y) 的节点时,遗迹核心会与该节点建立一条直线连接,流光则沿着连接线返回核心。

每次建立连接本身会产生 11 单位的损失。如果连接线内部还经过其他能量节点,流光便会在经过这些节点时发生分流,每经过一个节点会再产生 22 单位的损失。

因此,若从 (0,0)(0,0)(x,y)(x,y) 的线段内部还经过了 kk 个其他能量节点,那么汇集该节点的流光会产生 2k+12k+1 单位的传输损失。这里不将 (0,0)(0,0)(x,y)(x,y) 本身计入 kk

例如,汇集坐标为 (2,4)(2,4) 的节点时,连接线段内部经过了坐标为 (1,2)(1,2) 的节点,因此产生 33 单位的传输损失

只有提前知道全部连接会消耗多少流光,CodeDay 才能确定启动核心时需要保留的能量。请你求出汇集全部 n×mn\times m 个能量节点的流光时,产生的传输损失总和。

【输入格式】

从文件 energy.in\textbf{\textit{energy.in}} 中读入数据。

本题包含多组测试数据。

输入的第一行包含两个非负整数 c,Tc,T,分别表示测试点编号与测试数据的组数。c=0c=0 表示该测试点为样例。

接下来 TT 行,每行包含两个正整数 n,mn,m,表示能量节点的列数与每列节点数。

【输出格式】

输出到文件 energy.out\textbf{\textit{energy.out}} 中。

对于每组测试数据输出一行一个整数,表示汇集全部流光产生的传输损失总和。

【样例 1 输入】

0 35 41 12 2

【样例 1 输出】

3616

【说明/提示】

【样例 1 解释】

在第一组测试数据中,共有 2020 个能量节点,它们产生的传输损失总和为 3636

【样例 2】

见选手目录下的 energy/energy2.in\textbf{\textit{energy/energy2.in}}energy/energy2.ans\textbf{\textit{energy/energy2.ans}}

该组样例符合测试点 161\sim 6 的数据范围。

【样例 3】

见选手目录下的 energy/energy3.in\textbf{\textit{energy/energy3.in}}energy/energy3.ans\textbf{\textit{energy/energy3.ans}}

该组样例符合测试点 7127\sim 12 的数据范围。

【样例 4】

见选手目录下的 energy/energy4.in\textbf{\textit{energy/energy4.in}}energy/energy4.ans\textbf{\textit{energy/energy4.ans}}

该组样例符合测试点 202520\sim 25 的数据范围。

【数据范围】

R=min(n,m)R=\sum\min(n,m),其中求和范围为单个测试点内的全部测试数据。

对于 100%100\% 的数据,保证 1T201\leq T\leq 201n,m1051\leq n,m\leq 10^5R105R\leq 10^5

测试点编号TTn,mn,m特殊性质
161\sim 620\leq 20min(n,m)2\min(n,m)\leq 2
7127\sim 1220\leq 20300\leq 300
131913\sim 1920\leq 20105\leq 10^5
202520\sim 2520\leq 20105\leq 10^5

特殊性质:保证所有测试数据均满足 n=mn=m

【题解】

已公开 1 篇题解,官方题解会优先显示。

查看题解