跳到主要内容
原文124 词数1 分钟

题解:P9355 「SiR-1」Checkmate

概述

n 行 m 列棋盘上依次放棋,每对相邻格子里先放的一枚得 1 分,求总得分。总分等于相邻格子的对数:横向每行 m-1 对共 n 行,竖向每列 n-1 对共 m 列,合并为 2nm 减 n 减 m。时间复杂度 O(1)。

解题思路​

对于每一对相邻格子,先放置的棋子得分加 11,后放置的棋子不加分。

因此得分总和等于相邻格子的对数,具体计算如下:

  • 横向:有 nn 行,每行包含 m−1m-1 对,共有 n(m−1)n(m-1) 对。
  • 竖向:有 mm 列,每列包含 n−1n-1 对,共有 m(n−1)m(n-1) 对。

因此,相邻格子的总对数为:

n(m−1)+m(n−1)=2nm−n−mn(m-1)+m(n-1)=2nm-n-m

参考代码​

224 Bcpp
#include <bits/stdc++.h>
using namespace std;

using ll=long long;
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int T;
cin>>T;
while(T--)
{
ll n,m;
cin>>n>>m;
cout<<n*m*2-n-m<<'\n';
}
return 0;
}