比赛 2025暑期集训第6场 评测结果 AEEEETTTTTTTTTT
题目名称 Equilateral Triangles 最终得分 7
用户昵称 汐汐很希希 运行时间 33.410 s
代码语言 C++ 内存使用 46.46 MiB
提交时间 2025-07-12 10:03:21
显示代码纯文本
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e5+10,M=310;
int n,a[M][M],cnt=0,ans=0,vis[M][M][M];
struct Node
{
    int x,y,d[M];
}f[M];
int main()
{
    freopen("usaco_Feb_Triangles!.in","r",stdin);
    freopen("usaco_Feb_Triangles!.out","w",stdout);
    
    cin>>n;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            char c;
            cin>>c;
            if(c=='*'){
                a[i][j]=1;
                cnt++,f[cnt].x=i,f[cnt].y=j;
            }
            else a[i][j]=0;
        }
    }
    for(int i=1;i<=cnt;i++)
    {
        for(int j=1;j<=cnt;j++)
        {
            if(i==j) continue;
            int x=abs(f[i].x-f[j].x)+abs(f[i].y-f[j].y);
            f[i].d[j]=x;
        }
    }
    for(int i=1;i<=cnt;i++)
    {
        for(int j=1;j<=cnt;j++)
        {
            if(i==j) continue;
            for(int k=1;k<=cnt;k++)
            {
                if(j==k||i==k) continue;
                if(f[i].d[j]==f[i].d[k]) if(f[j].d[k]==f[i].d[j]) if(!vis[i][j][k]) ans++,vis[i][j][k]=vis[j][i][k]=vis[i][k][j]=vis[j][k][i]=vis[k][i][j]=vis[k][j][i]=1;
            }
        }
    }
    cout<<ans<<endl;
    return 0;
}