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

甜甜的好朋友蜜蜜发现上面的图还是有点规则的,于是他问甜甜:在你画的图中,我给你两个点,请你算一算连接两点的折线长度(即沿折线走的路线长度)吧。

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 // 根据两点的位置关系递归
 #include<stdio.h>
#include<math.h> double length(int x1, int y1, int x2, int y2)
{
double s=;
int t;
if(x1>x2)
{
t=x1; x1=x2; x2=t;
t=y1; y1=y2; y2=t;
}
if(x1==x2&&y1==y2) return s;
else
{
if(x1==&&y1==)
{ s++; y1++; }
if(x1==&&y2==&&(y1-x2)==)
{
s+=sqrt(y1*y1+x2*x2);
return s;
}
else if(x2-x1==y1-y2)
{
s+=(x2-x1)*sqrt(2.0);
return s;
}
else
{
if(x1==)
{
s+=sqrt((y1-)*(y1-)+y1*y1);
x1=y1-; y1=;
}
else
{
if(x1+y1>x2+y2)
{
s+=x1*sqrt(2.0);
y1+=x1; x1=;
}
else
{
s+=x2*sqrt(2.0);
y2+=x2; x2=;
}
}
return s+length(x1,y1, x2,y2);
}
}
} int main()
{
int n, x1,y1, x2,y2;
double s;
scanf("%d", &n);
while(n--)
{
scanf("%d %d %d %d", &x1, &y1, &x2, &y2);
s=length(x1,y1, x2,y2);
printf("%.3f\n", s);
}
return ;
}

WA

// 分别求两点到原点的距离,结果为其差的绝对值
 #include<stdio.h>
#include<math.h> double length(int x, int y)
{
double s=;
int i;
for(i=;i<x+y;i++)
s+=i*sqrt(2.0);
s+=x*sqrt(2.0); // 斜率为-1的路径长度
for(i=;i<x+y;i++)
s+=sqrt(i*i+(i+)*(i+)); // 斜率非-1或斜率不存在的路径长度
return s;
} int main()
{
int n, x1,y1, x2,y2;
double s1, s2;
scanf("%d", &n);
while(n--)
{
scanf("%d %d %d %d", &x1, &y1, &x2, &y2);
s1=length(x1,y1); s2=length(x2,y2);
printf("%.3f\n", fabs(s1-s2));
}
return ;
}

AC

												

7F - 无限的路的更多相关文章

  1. 无限的路_hdu_2073(AC).java

    无限的路 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  2. JSU省赛队员选拔赛个人赛1(Coin Change、Fibbonacci Number、Max Num、单词数、无限的路、叠筐)

    JSU省赛队员选拔赛个人赛1 一.题目概述: A.Coin Change(暴力求解.动态规划)     B.Fibbonacci Number(递推求解) C.Max Num(排序.比较) D.单词数 ...

  3. HDOJ 2073 无限的路

    Problem Description 甜甜从小就喜欢画图画,最近他买了一支智能画笔,由于刚刚接触,所以甜甜只会用它来画直线,于是他就在平面直角坐标系中画出如下的图形: 甜甜的好朋友蜜蜜发现上面的图还 ...

  4. HDU 2073 无限的路

    Problem Description 甜甜从小就喜欢画图画,最近他买了一支智能画笔,由于刚刚接触,所以甜甜只会用它来画直线,于是他就在平面直角坐标系中画出如下的图形: 甜甜的好朋友蜜蜜发现上面的图还 ...

  5. HDU 2073 无限的路 (模拟)

    题目链接 Problem Description 甜甜从小就喜欢画图画,最近他买了一支智能画笔,由于刚刚接触,所以甜甜只会用它来画直线,于是他就在平面直角坐标系中画出如下的图形: 甜甜的好朋友蜜蜜发现 ...

  6. 解题报告:hdu 2073 无限的路

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2073 Problem Description 甜甜从小就喜欢画图画,最近他买了一支智能画笔,由于刚刚接 ...

  7. hdoj--2073--无限的路(数学规律)

     无限的路 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Su ...

  8. 杭电ACM分类

    杭电ACM分类: 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze ...

  9. 计算机学院2014年“新生杯”ACM程序设计大赛

    1440: 棋盘摆车问题 对于输入n,k: 1.当n<k时,无满足的摆法 2.否则 第一个车可以排n*n个位置(即整个棋盘),第二个可排(n-1)*(n-1)个位置,…… 正如排列组合一样,车与 ...

随机推荐

  1. uniapp仿h5+fire自定义事件触发监听

    仿h5+fire自定义事件触发监听 uni-app调用 event.js 源码记录(点击查看) 1.js下载地址 [event.js](https://ext.dcloud.net.cn/plugin ...

  2. js 连接mqtt

    js连接mqtt 项目中要用到mqtt,前端调用,使用github开源的paho-mqtt.js,api还是挺全面的,网上各种教程很全面,但是感觉代码过于杂乱,故而封装的一下.仿jquery ajax ...

  3. rsync:基本命令和用法

    以下是rsync系列篇: 1.rsync(一):基本命令和用法 2.rsync(二):inotify+rsync详细说明和sersync 3.rsync算法原理和工作流程分析 4.rsync技术报告( ...

  4. (21/24) webpack实战技巧:webpack对三方类库的优化操作

    1.优化第一步--选用引入方式 在前面的学习中我们对于如何引入第三方类库(Jquery)推荐了两种方式,第一种是import引入的方式,第二种是ProvidePlugin插件.那两种引入方法有什么区别 ...

  5. Anatomy of a Database System学习笔记 - 事务:并发控制与恢复

    这一章看起来是讲存储引擎的.作者抱怨数据库被黑为“monolithic”.不可拆分为可复用的组件:但是实际上除了事务存储引擎管理模块,其他模块入解析器.重写引擎.优化器.执行器.访问方式都是代码相对独 ...

  6. 树——B-树

    B树的定义: 1.若根结点不是终端结点,则至少有2棵子树 2.每个中间节点都包含k-1个元素和k个孩子,其中 m/2 <= k <= m 3.每一个叶子节点都包含k-1个元素,其中 m/2 ...

  7. 嵌入式文件IO实验

    实验步骤: 1.arm-linux-gcc 交叉编译环境的安装.参考网站:https://jingyan.baidu.com/article/9c69d48f80282013c9024e20.html ...

  8. python中os模块操作目录与文件名小结

    (1). 创建目录: SigleDir = 'sigle_layer' MultiDir = 'D:\\Web\\multi_layer' 创建单层目录: os.mkdir(SigleDir) 创建多 ...

  9. Serializer fields

    1.导入 from rest_framework import serializers field参数 1.read_only read_only=True 表示不允许用户自己上传,只能用于api的输 ...

  10. validate表单验证

    validate使用步骤:1.导入jquery.js2.导入validate.js3.在页面加载成功之后 对表单进行校验  $("选择器").validate()4.在valida ...