HDU 2073 无限的路 (模拟)
Problem Description
甜甜从小就喜欢画图画,最近他买了一支智能画笔,由于刚刚接触,所以甜甜只会用它来画直线,于是他就在平面直角坐标系中画出如下的图形:

甜甜的好朋友蜜蜜发现上面的图还是有点规则的,于是他问甜甜:在你画的图中,我给你两个点,请你算一算连接两点的折线长度(即沿折线走的路线长度)吧。
Input
第一个数是正整数N(≤100)。代表数据的组数。
每组数据由四个非负整数组成x1,y1,x2,y2;所有的数都不会大于100。
Output
对于每组数据,输出两点(x1,y1),(x2,y2)之间的折线距离。注意输出结果精确到小数点后3位。
Sample Input
5
0 0 0 1
0 0 1 0
2 3 3 1
99 99 9 9
5 5 5 5
Sample Output
1.000
2.414
10.646
54985.047
0.000
分析:
看着题目好像跟吓人的样子,但是仔细观察的话就可以发现其中的规律,因为题目上明确给出了所要求的都是整数点之间的距离,也就相当于大大缩小了题目的难度。
我们首先来看那条从右下角往左上角走的直线,其实这条线上除了两个位于x轴和y轴的端点以外是没有整数点的,直接可以计算这天线段的长度,相当于一个以j和(j-1)为直角边的直角三角形的斜边。(j为位于y轴上的点的纵坐标)。
再看从右上到左下的直线,横坐标i减一,就相当于变换了一个整数点,所以到该点的直线的长度可以用建挨着到的右上角的点的直线的长度加上一个以1为两条直角边的之间三角形的斜边长度。
代码:
#include<stdio.h>
#include<iostream>
#include<math.h>
using namespace std;
double len[250][250];
int main()
{
len[0][0]=0;
for(int j=1; j<200; j++)
{
int temp=j-1;
len[0][j]=len[j-1][0]+sqrt((1.0*j*j)+(1.0*(j-1)*(j-1)));
//先加上那条从右下到左上的线段的长度,需要明白一点就是这条线上除了两个端点之外是没有整数点的
for(int i=1; i<=j; i++)
{
//从左上方开始向右下方计数,该直线上横坐标每差一个单位长度就是一个整数点
len[i][temp]=len[i-1][temp+1]+sqrt(2.0);
temp--;
}
}
int t,x1,y1,x2,y2;
scanf("%d",&t);
while(t--)
{
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
printf("%.3lf\n",fabs(len[x1][y1]-len[x2][y2]));
}
return 0;
}
HDU 2073 无限的路 (模拟)的更多相关文章
- 解题报告:hdu 2073 无限的路
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2073 Problem Description 甜甜从小就喜欢画图画,最近他买了一支智能画笔,由于刚刚接 ...
- HDU 2073 无限的路
Problem Description 甜甜从小就喜欢画图画,最近他买了一支智能画笔,由于刚刚接触,所以甜甜只会用它来画直线,于是他就在平面直角坐标系中画出如下的图形: 甜甜的好朋友蜜蜜发现上面的图还 ...
- HDOJ 2073 无限的路
Problem Description 甜甜从小就喜欢画图画,最近他买了一支智能画笔,由于刚刚接触,所以甜甜只会用它来画直线,于是他就在平面直角坐标系中画出如下的图形: 甜甜的好朋友蜜蜜发现上面的图还 ...
- 无限的路_hdu_2073(AC).java
无限的路 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- JSU省赛队员选拔赛个人赛1(Coin Change、Fibbonacci Number、Max Num、单词数、无限的路、叠筐)
JSU省赛队员选拔赛个人赛1 一.题目概述: A.Coin Change(暴力求解.动态规划) B.Fibbonacci Number(递推求解) C.Max Num(排序.比较) D.单词数 ...
- HDU 4041 Eliminate Witches! (模拟题 ACM ICPC 2011亚洲北京赛区网络赛)
HDU 4041 Eliminate Witches! (模拟题 ACM ICPC 2011 亚洲北京赛区网络赛题目) Eliminate Witches! Time Limit: 2000/1000 ...
- HDU 4452 Running Rabbits (模拟题)
题意: 有两只兔子,一只在左上角,一只在右上角,两只兔子有自己的移动速度(每小时),和初始移动方向. 现在有3种可能让他们转向:撞墙:移动过程中撞墙,掉头走未完成的路. 相碰: 两只兔子在K点整(即处 ...
- HDU 5948 Thickest Burger 【模拟】 (2016ACM/ICPC亚洲区沈阳站)
Thickest Burger Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)T ...
- HDU 5920 Ugly Problem 【模拟】 (2016中国大学生程序设计竞赛(长春))
Ugly Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tota ...
随机推荐
- 了不起的Node.js--之二
安装模块 使用NPM包管理器可以让你轻松对模块进行管理,它会下载指定的包.解决包的依赖.进行测试脚本及安装命令行脚本. 安装二进制工具包 有的项目分发的是Node编写的命令行工具.这个时候,安装时要增 ...
- PAT甲题题解-1012. The Best Rank (25)-排序水题
排序,水题因为最后如果一个学生最好的排名有一样的,输出的课程有个优先级A>C>M>E那么按这个优先级顺序进行排序每次排序前先求当前课程的排名然后再与目前最好的排名比较.更新 至于查询 ...
- linux 内核 第四周 扒开系统调用的三层皮 上
姬梦馨 原创作品 http://mooc.study.163.com/course/USTC-1000029000 一.用户态.内核态和中断处理过程 用户通过库函数与系统调用联系起来:库函数帮我们把系 ...
- week8:个人博客作业
团队作业(5) 要求 在PM 带领下, 每个团队深入分析下面行业的App, 找到行业的Top 5 (从下面的三个备选中,任选一个行业即可) 英语学习/词典App 笔记App 旅游行业的手机App 选择 ...
- 2D开机动画
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ...
- git 生成秘钥
Permission denied (publickey). fatal: The remote end hung up unexpectedly 应该是ssh key过期了吧 试着重新创建ssh k ...
- [转帖]VMware Vsphere 6.0安装部署 (三) vCenter Server安装
VMware Vsphere 6.0安装部署 (三) vCenter Server安装 2016年08月29日 14:59:14 dAng1r0Us 阅读数:72942 版权声明:本文为博主原创文 ...
- Python Kivy 中文教程:安装(Windows)
Kivy 是一套用于跨平台快速应用开发的开源框架,只需编写一套代码,便可运行于各大桌面及移动平台上(包括 Linux, Windows, OS X, Android, iOS, 以及 Raspberr ...
- oracle-表空间剩余空间大小占比查询
select tablespace_name, max_gb, used_gb, round(100 * used_gb / max_gb) pct_used from (select a.table ...
- pgm9
这部分介绍 sampling 方法,书上也称为 particle-based method,这是因为每一个从分布中采集到的样本可以看成是一个 particle(instantiation of r.v ...