博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
杭电ACM——2073,无限的路(思维)
阅读量:4049 次
发布时间:2019-05-25

本文共 1154 字,大约阅读时间需要 3 分钟。

突破口:直接硬肝,设置两个辅助数组,a1[205],a2[205],分别表示图中斜率为-1,和斜率不为-1的线段长度,找出所给两个点所在的线段编号flag1,flag2,再根据一些规律计算就好。

代码如下:

#include
#include
#include
#include
#include
#include
using namespace std;double a1[205],a2[205]; int main(){ int n,i,j; int flag1,flag2; double x1,x2,y1,y2,ans,temp; for(i=0;i<=200;i++) { if(i==0) { a1[i]=0;a2[i]=1; } else { a1[i]=sqrt(2*i*i); a2[i]=sqrt(i*i+(i+1)*(i+1)); } } scanf("%d",&n); while(n--) { scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2); ans=0;//printf("x1%.2lf y1%.2lf x2%.2lf y2%.2lf\n",x1,y1,x2,y2); for(i=0;i<=200;i++) { if(x1!=i) { temp=y1/(x1-i); //注意避免a÷0的情况 if(temp==-1) { flag1=i; break; } } else { if(y1==0) { flag1=i; break; } } } for(i=0;i<=200;i++) { if(x2!=i) { temp=y2/(x2-i); if(temp==-1) { flag2=i; break; } } else { if(y2==0) { flag2=i; break; } } }//printf("f1 %d f2 %d\n",flag1,flag2); if(flag1==flag2) //在同一线段上 { ans=sqrt( (y1-y2)*(y1-y2) + (x1-x2)*(x1-x2) ); } else { if(flag1>flag2) //确保x1,y1在编号小的线段上 { swap(x1,x2); swap(y1,y2); swap(flag1,flag2); } temp=0; for(i=flag1;i

补充:后知后觉,flag1=(long long)(x1+y1);flag2=(long long)(x2+y2);

转载地址:http://vbdci.baihongyu.com/

你可能感兴趣的文章
毕业设计(课程设计)—SpringBoot网上订餐系统的设计与实现—计算机类专业课程设计(毕业设计)
查看>>
毕业设计(课程设计)—个人博客系统(微博)的设计与实现—计算机类专业课程设计(毕业设计)
查看>>
牛客(中兴捧月)—B-切绳子
查看>>
剑指Offer 13.机器人的运动范围——DFS和BFS
查看>>
Java中GUI编程总结—AWT中的Frame容器、panel面板、布局管理
查看>>
剑指offer12.矩阵中的路径—DFS+剪枝
查看>>
Java中GUI编程总结—事件监听、TextField监听、画笔、(鼠标、窗口、键盘)监听
查看>>
Java中GUI编程总结—Swing(窗口、面板、弹窗、标签、按钮、列表、文本框)
查看>>
Java中map容器分别根据键key和值value进行排序的总结
查看>>
剑指offer面试题16. 数值的整数次方——快速幂
查看>>
剑指 Offer 39. 数组中出现次数超过一半的数字——摩尔投票法
查看>>
python中SQLite3 数据库语句使用总结——增删改查
查看>>
Java网络编程总结
查看>>
leetcode 477. 汉明距离总和——超出时间限制
查看>>
基于SSM校园二手交易市场系统——课程设计(毕业设计)
查看>>
leetcode 1882.使用服务器处理任务——优先队列
查看>>
leetcode 523.连续的子数组的和——前缀和+哈希表
查看>>
Java中的set的toArray()转成的数组如何进行接收
查看>>
剑指offer 43 1~n整数中1出现的次数
查看>>
基于SSM的图书馆管理系统——计算机类专业课程设计(毕业设计)
查看>>