題目連結: https://onlinejudge.org/external/2/278.pdf
題目大意: 給你是甚麼棋子,棋盤大小,問能放多少個那種棋子,互不干擾
思路: 模擬, 基本上都是4X4以上,所以可以畫一個4x4的圖去推演。
先備知識: R城堡 走橫的跟直的
k騎士 走日字
Q皇后 走橫直斜
K國王 走外圈1步
所以R 可以全放斜的
Q類似R, 但放法不同, 解法一樣。最小的row或col。
騎士的話交替放, 第一行放13,第二行放24,第三行放13 可以寫成級數和,但這邊就不優化了,因為值不大。
國王的話row跟col都是交替放。
代碼:
#include <bits/stdc++.h>
using namespace std;
int main()
{
//freopen("out.txt", "w", stdout);
int t, n, m, sum;
cin >> t;
while(t--){
char c;
cin >> c >> n >> m;
switch(c){
case 'r':
sum = min(n, m);
break;
case 'k':
sum = 0;
for(int i = 1; i <= n; ++i){
for(int j = i&1 ? 1: 2; j <= m; j += 2){
sum++;
}
}
break;
case 'Q':
sum = min(n, m);
break;
case 'K':
sum = 0;
for(int i = 1; i <= n; i += 2){
for(int j = 1; j <= m; j += 2){
sum++;
}
}
break;
}
cout << sum << endl;
}
return 0;
}
/*
2
r 6 7
k 8 8
*/