ABC330

发布时间 2023-11-25 22:03:40作者: feather_life

D

记录每一行,每一列有多少个 o,然后统计答案即可。

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n;
string str[2005];
int r[2005][2005],l[2005][2005];
signed main()
{
    cin >> n;
    for(int i = 1;i <= n;i++)
    {
        cin >> str[i];
        str[i] = " " + str[i];
    }
    for(int i = 1;i <= n;i++)
    {
        for(int j = 1;j <= n;j++)
        {
            r[i][j] = r[i - 1][j] + (str[i][j] == 'o');
            l[i][j] = l[i][j - 1] + (str[i][j] == 'o');
        }
    }
    int ans = 0;
    for(int i = 1;i <= n;i++)
    {
        for(int j = 1;j <= n;j++)
        {
            if(str[i][j] == 'o')
            {
                ans += (r[n][j] - 1) * (l[i][n] - 1);
            }
        }
    }
    cout << ans;
    return 0;
}