牛客网暑期ACM多校训练营(第四场) F

链接:

https://www.nowcoder.com/acm/contest/142/F

题意:

n x m的矩形,选个p x q的矩形去掉,两个矩形中⼼重合,去掉后的矩形上下左右对称
 求(p, q)⽅方案数
 n, m <= 2000, n, m是偶数,p < n 且 q < m

分析:

直接求对称的外框有多宽多长, 答案就是长*宽

#include <bits/stdc++.h>
using namespace std;
int n, m;
string G[12345];
int main() {
//    freopen("1.txt","r", stdin);
    int T;
    cin >> T;
    while(T--) {
        cin >> n >> m;
        for(int i = 0; i < n; i++) {
            cin >> G[i];
        }

        int c, r;
        for(c = 0; c < n/2; c++) {
            bool flag = true;
            for(int k = 0; k < m; k++) {
                if(G[c][k] != G[n-c-1][k]) {
                    flag = false;
                    break;
                }
            }
            if(!flag || c == n/2 - 1)
                break;
        }
        for(r = 0; r < m/2; r++) {
            bool flag = true;
            for(int k = 0; k < n; k++) {
                if(G[k][r] != G[k][m-r-1]) {
                    flag = false;
                    break;
                }
            }
            if(!flag || r == m/2 - 1)
                break;
        }
        cout << c * r << "\n";
    }
}

猜你喜欢

转载自www.cnblogs.com/Jadon97/p/9383027.html