题解 「SiR-1」Checkmate
前言:这题本来是 Div.2 A,结果因为你谷的通过率要求变成了 Div.2 B。个人认为这题放在这个位置难度过低了。赛后看看通过率。
Subtask 1
我会爆搜!
Subtask 2
我会状压!
Subtask 3
爆搜小数据,或者手玩,或者 DP,可以发现答案为
Subtask 4
考虑搜出答案数列为
Subtask 5
在刚刚的爆搜过程中,你可能已经发现,不管放置棋子的顺序如何,最终获得的分数都一样。这是为什么呢?
考虑一对相邻的格子,我们称它们为格子
因此,一对相邻的格子一定会使最终答案恰好增加
因此,最终答案就是相邻格子的对数。我们考虑分开统计横着相邻和竖着相邻的格子,不难得到答案为
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int T;
ll n, m;
int main() {
scanf("%d", &T);
while (T--) {
scanf("%lld%lld", &n, &m);
printf("%lld\n", 2 * n * m - n - m);
}
return 0;
}