比赛 2025暑期集训第6场 评测结果 ATTTTTTTTTTTTTT
题目名称 Equilateral Triangles 最终得分 7
用户昵称 xxz 运行时间 41.970 s
代码语言 C++ 内存使用 3.43 MiB
提交时间 2025-07-12 11:37:01
显示代码纯文本
#include<bits/stdc++.h>
#define int long long
using namespace std;
char mp[321][321];
int n,ans;
int mhd(int x,int y,int x_,int y_){
	return abs(x-x_)+abs(y-y_);
}
bool isdengbian(int x,int y,int x_,int y_,int x__,int y__){
	return mhd(x,y,x_,y_)==mhd(x,y,x__,y__)&&mhd(x,y,x_,y_)==mhd(x_,y_,x_,y_);
}
void read(int &x) {bool neg = false;x = 0;char ch = 0;while (ch < '0' || ch > '9') {if (ch == '-') neg = true;ch = getchar();}if (neg) {while (ch >= '0' && ch <= '9') {x = x * 10 + ('0' - ch);ch = getchar();}} else {while (ch >= '0' && ch <= '9') {x = x * 10 + (ch - '0');ch = getchar();}}return;}
signed main(){
	freopen("usaco_Feb_Triangles!.in","r",stdin);freopen("usaco_Feb_Triangles!.out","w",stdout);
	read(n);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cin>>mp[i][j];
		}
	}
	if(n==3){
		printf("1");
		return 0;
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(mp[i][j]=='*'){
				for(int k=i;k<=n;k++){
					for(int l=1;l<=n;l++){
						if(mp[k][l]=='*'){
							if(k==i&&l==j)continue;
							for(int u=k;u<=n;u++){
								for(int o=1;o<=n;o++){
									if(u==k&&o==l)continue;
									if(mp[u][o]=='*'){
										if(isdengbian(i,j,k,l,u,o)){
											ans++;
										}
									}
								}
							}
						}
					}
				}
			}
		}
	}
	printf("%lld",ans);
	return 0;
}