比赛 |
2025暑期集训第6场 |
评测结果 |
ATTTTTTTTTTTTTT |
题目名称 |
Equilateral Triangles |
最终得分 |
7 |
用户昵称 |
会挽弯弓满月 |
运行时间 |
41.974 s |
代码语言 |
C++ |
内存使用 |
3.73 MiB |
提交时间 |
2025-07-12 11:30:13 |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
const int N=310;
int n;
char cc;
struct node{
int x,y;
}s[N*N];
int cnt;
bool cmp(node o,node p){
if(o.x==p.x) return o.y<p.y;
return o.x<p.x;
}
int dis(int o,int p){
int xd,yd;
xd=abs(s[o].x-s[p].x);
yd=abs(s[o].y-s[p].y);
return xd+yd;
}
bool pd(int a,int b,int c){
int xa,xb,xc,ya,yb,yc;
int res1,res2;
xa=s[a].x;ya=s[a].y;
xb=s[b].x;yb=s[b].y;
xc=s[c].x;yc=s[c].y;
res1=(yc-ya)*(xb-xa);
res2=(yb-ya)*(xc-xa);
if(res1==res2) return 0;
return 1;
}
int d1,d2,d3;
int ans;
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>>cc;
if(cc=='*'){
s[++cnt].x=i;
s[cnt].y=j;
}
}
}
sort(s+1,s+cnt+1,cmp);
for(int i=1;i<=cnt-2;i++){
for(int j=i+1;j<=cnt-1;j++){
for(int k=j+1;k<=cnt;k++){
if(!pd(i,j,k)) continue;
d1=dis(i,j);d2=dis(i,k);d3=dis(j,k);
if(d1==d2&&d2==d3) ans++;
}
}
}
printf("%d",ans);
return 0;
}