JZOJ 1385. 直角三角形
题目
Description
从N个点选择3个点,问有多少选法使得这3个点形成直角三角形。
Input
接下来N行,每行包含两个用空格隔开的整数表示每个点的坐标,坐标值在-10^9到10^9之间。
每个点位置互不相同。
Output
Sample Input
输入1: 3 4 2 2 1 1 3输入2: 4 5 0 2 6 8 6 5 7输入3: 5 -1 1 -1 0 0 0 1 0 1 1
Sample Output
输出1: 1输出2: 0输出3: 7
Data Constraint
分析
- 首先,我们肯定要两两枚举
- 然后,我们需要知道斜率
- 在坐标系中 一次函数 y=kx k就是斜率
- 二次函数 y=kx+b k也是斜率
- 因为直角三角形两边斜率相乘是-1
- 根据这个性质我们可以知道构成三角形是斜率相等但在不同象限的点
- 所以我们就求斜率相同的点
- 然后我们就可以有一个排序来优化
- 相同的斜率的一定在一起
- 答案就是讲相邻两象限的相同斜率的点乘起来再相加
代码
1 #include<iostream> 2 #include<algorithm> 3 using namespace std; 4 long long x[10010],y[10001]; 5 struct sb 6 { 7 long long x,y,xx; 8 }tmp[10001]; 9 void turn(int p) 10 { 11 swap(tmp[p].x,tmp[p].y); 12 tmp[p].y=-tmp[p].y; 13 tmp[p].xx=(tmp[p].xx+1)%4; 14 } 15 bool cmp(sb a,sb b) 16 { 17 return a.x*b.y>b.x*a.y; 18 } 19 int cnt; 20 int main () 21 { 22 int n; 23 cin>>n; 24 for (int i=1;i<=n;i++) cin>>x[i]>>y[i]; 25 for (int i=1;i<=n;i++) 26 { 27 for (int j=1;j<=n;j++) 28 { 29 tmp[j].x=x[j]-x[i]; 30 tmp[j].y=y[j]-y[i]; 31 tmp[j].xx=0; 32 if (i==j) 33 { 34 tmp[j].x=tmp[1].x; 35 tmp[j].y=tmp[1].y; 36 tmp[j].xx=tmp[1].xx; 37 } 38 else 39 while (tmp[j].x<=0||tmp[j].y<0) turn(j); 40 } 41 sort(tmp+2,tmp+n+1,cmp); 42 int j=2; 43 while (j<=n) 44 { 45 int ans[4]={0}; 46 int k=j; 47 while (k<=n&&tmp[j].x*tmp[k].y==tmp[k].x*tmp[j].y) 48 ans[tmp[k].xx]++,k++; 49 for (int kk=0;kk<=3;kk++) 50 cnt+=ans[kk]*ans[(kk+1)%4]; 51 j=k; 52 } 53 } 54 cout<<cnt; 55 }
转载于:https://www.cnblogs.com/zjzjzj/p/11318149.html
JZOJ 1385. 直角三角形相关推荐
- 直角三角形 纪中 1385 数学_斜率
Description 二维平面坐标系中有N个点. 从N个点选择3个点,问有多少选法使得这3个点形成直角三角形. Input 第一行包含一个整数N(3<=N<=1500),表示点数. 接下 ...
- JZOJ 3736. 数学题(math) 题解
JZOJ 3736. 数学题(math) 题解 题意: 给定 a ⃗ , b ⃗ \vec a , \vec b a ,b , 问 对 于 任 意 x , y ∈ Z , 且 x , y 不 同 时 ...
- JZOJ 5461 购物 —— 贪心
题目:https://jzoj.net/senior/#main/show/5461 贪心,原来想了个思路,优先选优惠价最小的 K 个,然后其他按原价排序遍历: 如果当前物品没选过,原价选上,如果选过 ...
- 【青少年编程】绘制等腰直角三角形
Scratch竞赛交流群已成立(适合6至18周岁的青少年),公众号后台回复[Scratch],即可进入. 如果加入了之前的社群不需要重复加入. 类比思维就是指把两个或者两类事物进行比较,并进行逻辑推理 ...
- 10大机器学习开源项目推荐(Github平均star为1385)
翻译 | suisui 出品 | 人工智能头条(AI_Thinker) 本文推荐的10大机器学习开源项目是由Mybridge从250个机器学习开源项目中挑选出来的,Github 平均 star为 13 ...
- 实心等腰直角三角形。
[题目描述] 请编程输出长度为n的实心等腰直角三角形. [输入描述] 输入一个整数n.(0 < n <= 10) [输出描述] 输出长度为n的实心等腰直角三角形.具体格式见样例. [样例输 ...
- HDU 1385 Minimum Transport Cost
HDU 1385 Minimum Transport Cost 我的WA代码 AC的代码 我的WA代码 我的大概思路就是,如果i->j,如果找到一个中间点k就直接简单的将path[i][j]=k ...
- JZOJ 5372. 【NOIP2017提高A组模拟9.17】猫
Description 信息组最近猫成灾了!隔壁物理组也拿猫没办法.信息组组长只好去请神刀手来帮他们消灭猫.信息组现在共有n 只猫(n 为正整数),编号为1 到n,站成了一个环,第i 只猫的左边是第i ...
- 直角三角形的边角关系_华师大版九年级第四章解直角三角形,知识点讲解加经典例题分析...
1.射影定理 (1)射影定理: ①直角三角形中,斜边上的高是两直角边在斜边上射影的比例中项. ②每一条直角边是这条直角边在斜边上的射影和斜边的比例中项. (2) Rt△ABC中,∠BAC=90∘,AD ...
最新文章
- C语言与OpenCL的编程示例比较
- bzoj1079: [SCOI2008]着色方案(DP)
- 面试题;40个多线程的问题 背1 有用
- 唯品会实时计算平台的演进之路
- 第十一届蓝桥杯省赛 A组 试题H:子串分值
- 分享Kali Linux 2016.2第41周镜像虚拟机
- 常用元素位置与大小总结
- Nginx —— nginx的命令行控制(nginx的启动与停止、重载配置文件、回滚日志文件、平滑升级等操作)
- (转)淘淘商城系列——商品搜索功能测试
- 第三周 分队列 mooc 翁恺 c语言
- python声明匿名函数_举例讲解Python的lambda语句声明匿名函数的用法
- 小米电视4a刷鸿蒙,小米电视4A 删除内置应用及其去广告攻略
- html跨页面传数组,如何把一个页面的对象数组传到另外一个页面,没有后台,存js_html/css_WEB-ITnose...
- golang 提示:can‘t resolve file
- P4778 Counting swaps (组合数学,打表推通项公式,OEIS)
- 攻防世界-杂项-simple_transfer
- 计算几何之多边形重心
- 国家30万吨白糖收储正式启动
- V部落博客管理平台开源啦! Vue+SpringBoot强强联合! 1
- 如何培养青少年的阅读习惯?父母应该从三个方面培养青少年的好兴趣