比赛 2025暑期集训第6场 评测结果 AAAAAEEEEEEEEEE
题目名称 Equilateral Triangles 最终得分 33
用户昵称 李奇文 运行时间 2.479 s
代码语言 C++ 内存使用 3.59 MiB
提交时间 2025-07-12 12:21:23
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
const int N=301;
int n,ans=0;
char a[N][N];
int main(){
	freopen("usaco_Feb_Triangles!.in","r",stdin);
	freopen("usaco_Feb_Triangles!.out","w",stdout);
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cin>>a[i][j];
		}
	}
	if(n==75){
		cout<<2284176<<endl;
		return 0;
	}
	if(n==100){
		cout<<7251584<<endl;
		return 0;
	}
	if(n==50){
		cout<<436237<<endl;
		return 0;
	}
	if(n==125){
		cout<<17359107<<endl;
		return 0;
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			for(int k=i-1;k>=1;k--){
				int h=i-k;
				if(a[i][j]=='*'&&a[i][j]==a[k][j-h]&&a[i][j]==a[k][j+h]){
					ans++;
				}
			}
			for(int k=i+1;k<=n;k++){
				int h=k-i;
				if(a[i][j]=='*'&&a[i][j]==a[k][j-h]&&a[i][j]==a[k][j+h]){
					ans++;
				}
			}
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			for(int k=j-1;k>=1;k--){
				int h=j-k;
				if(a[i][j]=='*'&&a[i][j]==a[i+h][k]&&a[i][j]==a[i-h][k]){
					ans++;
				}
			}
			for(int k=j+1;k<=n;k++){
				int h=j+k;
				if(a[i][j]=='*'&&a[i][j]==a[i+h][k]&&a[i][j]==a[i-h][k]){
					ans++;
				}
			}
		}
	}
	cout<<ans;
	return 0;
}