直角三角形
来源:互联网 发布:程序员编程用什么软件 编辑:程序博客网 时间:2024/04/30 14:24
Description
平面上给定N个两两不同的整点,统计以给定的点为顶点,且直角边平行于坐标轴的直角三角形数。
Input
输入文件right.in第一行为一个整数N。
以下N行,每行给出一个点的坐标。
Output
输出文件名为right.out。输出一个整数表示统计结果。
Sample Input
4
0 0
0 1
1 0
1 1
Sample Output
4
Data Constraint
Hint
【数据规模和约定】
30%的数据满足 N ≤ 100;
50%的数据满足 N ≤ 1000;
100%的数据满足0 < N ≤ 100000,所有坐标不超过32位整数范围。
分析:我们把每个点都做一次直角顶点,然后求该点在同一行,同一列的点(平行坐标轴)。把这两条直线除自己外的点数想乘加入结果即可。(我一开始爆零了,早了半天原来打错一个字母,下次一定注意)。
标程:
type
arr=
array[
1..
100002]
oflongint;
var
x,y,dx,dy,gx,gy,numx,numy:arr;
n,i,k,k1,s,r,l,t,mid,a,b,ans:longint;
procedureqsort(l,r:longint; var a:arr);
var i,j,mid,temp:longint;
begin
ifl>=r
thenexit;
mid:=a[l+random(r-l+
1)];
i:=l; j:=r;
repeat
while
a[i]<mid
doinc(i);
while
a[j]>mid
dodec(j);
if
i<=j
then
begin
temp:=a[i]; a[i]:=a[j]; a[j]:=temp;
inc(i); dec(j);
end
;
until i>j;
qsort(l,j,a);
qsort(i,r,a);
end;
begin
readln(n);
fori:=
1ton
do
begin
readln(x[i],y[i]);
dx[i]:=x[i]; dy[i]:=y[i];
end;
qsort(
1,n,x);
qsort(
1,n,y);
k:=
1;
gx[k]:=x[
1];
fori:=
2ton
do
begin
if
x[i]=x[i-
1]
then
inc(numx[k])
elsebegin
inc(k); gx[k]:=x[i];
end;
end
;
k1:=
1;
gy[k1]:=y[
1];
fori:=
2ton
do
begin
if
y[i]=y[i-
1]
then
inc(numy[k1])
elsebegin
inc(k1); gy[k1]:=y[i];
end;
end
;
x:=dx; y:=dy;
fori:=
1ton
do
begin
s:=x[i]; t:=y[i];
l:=
1; r:=k;
while
l<=r
do
begin
mid:=(l+r)
shr1;
if
gx[mid]=s
thenbreak;
if
gx[mid]>s
thenr:=mid-
1
else
l:=mid+
1;
end
;
if
gx[mid]=s
thena:=numx[mid];
l:=
1; r:=k1;
while
l<=r
do
begin
mid:=(l+r)
shr1;
if
gy[mid]=t
thenbreak;
if
gy[mid]>t
thenr:=mid-
1
else
l:=mid+
1;
end
;
if
gy[mid]=t
thenb:=numy[mid];
ans:=ans+a*b;
end;
writeln(ans);
end.
0 0
- 直角三角形
- 直角三角形
- 直角三角形
- 直角三角形
- 直角三角形
- 直角三角形
- 直角三角形
- 倒直角三角形
- 构成直角三角形
- 直角三角形(*)
- 打印直角三角形
- 正直角三角形
- 打印直角三角形
- 【模拟】 直角三角形
- 直角三角形类
- [FDU1669] 直角三角形
- 打印直角三角形
- d014: 判断直角三角形
- 【项目】基于TCP/IP的socket编程之心跳机制
- Android_ViewPager左右切换当前的页面
- Lcs(模板)
- 从SVN上检出项目
- 在CentOS中编译FFmpeg for Android静态库(含fdk aac,x264)
- 直角三角形
- XMLPULL 解析
- JZOJ.4680. 【NOIP2016提高A组8.11】自然数
- 编译FFmpeg for iOS
- IntelliJ IDEA 无法自动显示代码提示框
- Java_数组概述
- Java如何正确地写出单例模式
- win10升级后myeclipse打不开,新装myeclipse10工程乱码问题解决
- Tiny6410开发板与虚拟机 NFS挂载