【NOIP2011模拟9.1】直角三角形 (Standard IO)
来源:互联网 发布:apm地面站软件 安卓 编辑:程序博客网 时间:2024/05/21 15:51
平面上给定N个两两不同的整点,统计以给定的点为顶点,且直角边平行于坐标轴的直角三角形数。
题解
我们发现是找两条线段的交点,分别储存横纵坐标,数据大用HASH。
代码:
var x,y,x1,y1,h,hh:array[-1500000..1500000] of longint; a:array[1..100000,1..2] of longint; i,j,n,s,m,m1,ans:longint;function h0(a:longint):longint;var b:longint;begin b:=a mod 403219; while (h[b]<>0)and(h[b]<>a) do b:=b mod 403219+1; h0:=b;end;function h1(a:longint):longint;var b:longint;begin b:=a mod 403219; while (hh[b]<>0)and(hh[b]<>a) do b:=b mod 403219+1; h1:=b;end;begin readln(n); for i:=1 to n do begin readln(a[i,1],a[i,2]); j:=h0(a[i,2]); if h[j]<>a[i,2] then begin m:=m+1; x[j]:=m; h[j]:=a[i,2]; y[x[j]]:=y[x[j]]+1; end else y[x[j]]:=y[x[j]]+1; j:=h1(a[i,1]); if hh[j]<>a[i,1] then begin m1:=m1+1; x1[j]:=m1; hh[j]:=a[i,1]; y1[x1[j]]:=y1[x1[j]]+1; end else y1[x1[j]]:=y1[x1[j]]+1; end; for i:=1 to n do ans:=ans+(y[x[h0(a[i,2])]]-1)*(y1[x1[h1(a[i,1])]]-1); writeln(ans);end.
1 0
- 【NOIP2011模拟9.1】直角三角形 (Standard IO)
- 【NOIP2011模拟9.1】统计 (Standard IO)
- 【NOIP2011模拟9.1】方格取数 (Standard IO)
- 【NOIP2011模拟9.3】跳舞 (Standard IO)
- 【NOIP2011模拟9.3】旅行 (Standard IO)
- 2553. 【NOIP2011模拟9.7】射命丸文 (Standard IO)
- 2555. 【NOIP2011模拟9.7】雾雨魔理沙 (Standard IO)
- 2556. 【NOIP2011模拟9.7】伊吹萃香 (Standard IO)
- 2569. 【NOIP2011模拟9.17】旅行 (Standard IO)
- jzoj 2543. 【NOIP2011模拟9.1】直角三角形
- 2543. 【NOIP2011模拟9.1】直角三角形 (StandardIO)
- 直角三角形 (Standard IO)
- 直角三角形 (Standard IO)
- JZOJ8.11(C组)【NOIP2011模拟9.1】方格取数 (Standard IO)
- 【NOIP2011模拟9.3】作弊的发牌者 (Standard IO)
- 2548. 【NOIP2011模拟9.4】最大正方形 (Standard IO)
- 2549. 【NOIP2011模拟9.4】家庭作业 (Standard IO)
- 2554. 【NOIP2011模拟9.7】帕秋莉·诺蕾姬 (Standard IO)
- Boost智能指针——weak_ptr
- 学习笔记之部署流程
- Hdu-5821 Ball(贪心)
- Manacher算法
- linux的帮助系统之help
- 【NOIP2011模拟9.1】直角三角形 (Standard IO)
- 02. Yii 2.0 框架的目录结构
- linux文件时间戳
- iOS 64-bit architecture 使用objc_msgSend要小心
- Minimum Inversion Number(线段树&&逆序对)
- 服务器编程
- 8-11学习小结
- Androidn Notification的使用,解决找不到setLatestEventInfo方法
- CSS 选择器权重计算规则