题目: 传送门
思路: 若 n 为偶 ,则 每行 n * n /2 之前和之后的数的个数相等 , 为 奇 ,则 每行 n * n /2 之前和之后的数的个数与 行的奇偶有关。
int main() {
long long n, q;
cin >> n >> q;
long long mids = (n*n - 1) / 2 + 1;
while(q--) {
long long x, y;
cin >> x >> y;
if (n % 2 == 0) {
cout << ((x+y)%2==0? 0:mids)+(x - 1)*(n / 2) + (y%2==0? y:y+1) / 2 << endl;
}
else {
long long bef_1 = (x - 1) / 2*(n/2)+(x-1- (x - 1) / 2)*(n/2+1);
long long bef_2 = (x - 1) / 2 * (n / 2 + 1) + (x - 1 - (x - 1) / 2)*(n / 2);
cout << ((x + y) % 2 == 0 ? 0+bef_1 : mids+bef_2) + (y % 2 == 0 ? y : y + 1) / 2 << endl;
}
}
return 0;;
}