close

題目連結:  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
*/

arrow
arrow

    尾玉 發表在 痞客邦 留言(0) 人氣()