7F - 无限的路

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

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

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

// 根据两点的位置关系递归

 1 #include<stdio.h>
 2 #include<math.h>
 3
 4 double length(int x1, int y1, int x2, int y2)
 5 {
 6     double s=0;
 7     int t;
 8     if(x1>x2)
 9     {
10         t=x1; x1=x2; x2=t;
11         t=y1; y1=y2; y2=t;
12     }
13     if(x1==x2&&y1==y2) return s;
14     else
15     {
16         if(x1==0&&y1==0)
17         { s++; y1++; }
18         if(x1==0&&y2==0&&(y1-x2)==1)
19         {
20             s+=sqrt(y1*y1+x2*x2);
21             return s;
22         }
23         else if(x2-x1==y1-y2)
24         {
25             s+=(x2-x1)*sqrt(2.0);
26             return s;
27         }
28         else
29         {
30             if(x1==0)
31             {
32                 s+=sqrt((y1-1)*(y1-1)+y1*y1);
33                 x1=y1-1; y1=0;
34             }
35             else
36             {
37                 if(x1+y1>x2+y2)
38                 {
39                     s+=x1*sqrt(2.0);
40                     y1+=x1; x1=0;
41                 }
42                 else
43                 {
44                     s+=x2*sqrt(2.0);
45                     y2+=x2; x2=0;
46                 }
47             }
48             return s+length(x1,y1, x2,y2);
49         }
50     }
51 }
52
53 int main()
54 {
55     int n, x1,y1, x2,y2;
56     double s;
57     scanf("%d", &n);
58     while(n--)
59     {
60         scanf("%d %d %d %d", &x1, &y1, &x2, &y2);
61         s=length(x1,y1, x2,y2);
62         printf("%.3f\n", s);
63     }
64     return 0;
65 }

WA

// 分别求两点到原点的距离,结果为其差的绝对值

 1 #include<stdio.h>
 2 #include<math.h>
 3
 4 double length(int x, int y)
 5 {
 6     double s=0;
 7     int i;
 8     for(i=1;i<x+y;i++)
 9         s+=i*sqrt(2.0);
10     s+=x*sqrt(2.0);                    // 斜率为-1的路径长度
11     for(i=0;i<x+y;i++)
12         s+=sqrt(i*i+(i+1)*(i+1));    // 斜率非-1或斜率不存在的路径长度
13     return s;
14 }
15
16 int main()
17 {
18     int n, x1,y1, x2,y2;
19     double s1, s2;
20     scanf("%d", &n);
21     while(n--)
22     {
23         scanf("%d %d %d %d", &x1, &y1, &x2, &y2);
24         s1=length(x1,y1); s2=length(x2,y2);
25         printf("%.3f\n", fabs(s1-s2));
26     }
27     return 0;
28 }

AC



原文地址:https://www.cnblogs.com/goldenretriever/p/10357104.html

时间: 2024-10-06 00:55:21

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

HDU2073 无限的路

无限的路 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 6123    Accepted Submission(s): 3102 Problem Description 甜甜从小就喜欢画图画,最近他买了一支智能画笔,由于刚刚接触,所以甜甜只会用它来画直线,于是他就在平面直角坐标系中画出如下的图形: 甜甜的好朋友蜜蜜发现上面的图还是有点

HDU2073 无限的路【水题】【递推】

无限的路 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 6113    Accepted Submission(s): 3097 Problem Description 甜甜从小就喜欢画图画,最近他买了一支智能画笔,由于刚刚接触,所以甜甜只会用它来画直线,于是他就在平面直角坐标系中画出如下的图形: 甜甜的好朋友蜜蜜发现上面的图还是有点

HDU-2073 无限的路

Description 甜甜从小就喜欢画图画,最近他买了一支智能画笔,由于刚刚接触,所以甜甜只会用它来画直线,于是他就在平面直角坐标系中画出如下的图形: 甜甜的好朋友蜜蜜发现上面的图还是有点规则的,于是他问甜甜:在你画的图中,我给你两个点,请你算一算连接两点的折线长度(即沿折线走的路线长度)吧. Input 第一个数是正整数N(≤100).代表数据的组数.每组数据由四个非负整数组成x1,y1,x2,y2:所有的数都不会大于100. Output 对于每组数据,输出两点(x1,y1),(x2,y2

无限的路

Description 甜甜从小就喜欢画图画,最近他买了一支智能画笔,由于刚刚接触,所以甜甜只会用它来画直线,于是他就在平面直角坐标系中画出如下的图形:       甜甜的好朋友蜜蜜发现上面的图还是有点规则的,于是他问甜甜:在你画的图中,我给你两个点,请你算一算连接两点的折线长度(即沿折线走的路线长度)吧. Input 第一个数是正整数N(≤100).代表数据的组数.        每组数据由四个非负整数组成x1,y1,x2,y2:所有的数都不会大于100. Output 对于每组数据,输出两点

【递推】【HDU 2073】无限的路 (找规律)

链接:http://acm.hdu.edu.cn/showproblem.php?pid=2073 意外之喜  还挺不错的一道题目 仔细观察不难发现   其实整个路线只有这两种线(绿色跟红色) 并且在移动过程中[x,y]的改变(红线部分)总是遵循这两种规律[x+1,y-1]或者[x-1,y+1],设x+y=z 在同一条红线中z的值是不变的 既然如此 我们不如直接用x+y来计算红线部分的总值,忽略x与y的具体数值 我们定义一个数组p1[z]来保存红线的前缀和 计算公式也很容易看出来p1[0] =

hdoj 2073--无限的路

无限的路 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 7601    Accepted Submission(s): 3913 Problem Description 甜甜从小就喜欢画图画,最近他买了一支智能画笔,由于刚刚接触,所以甜甜只会用它来画直线,于是他就在平面直角坐标系中画出如下的图形: 甜甜的好朋友蜜蜜发现上面的图还是有点规

杭电ACM分类

杭电ACM分类: 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze 广度搜索1006 Redraiment猜想 数论:容斥定理1007 童年生活二三事 递推题1008 University 简单hash1009 目标柏林 简单模拟题1010 Rails 模拟题(堆栈)1011 Box of Bricks 简单题1012 IMMEDIATE DECODABILITY

【转】对于杭电OJ题目的分类

[好像博客园不能直接转载,所以我复制过来了..] 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze 广度搜索1006 Redraiment猜想 数论:容斥定理1007 童年生活二三事 递推题1008 University 简单hash1009 目标柏林 简单模拟题1010 Rails 模拟题(堆栈)1011 Box of Bricks 简单题1012 IMMEDI

转载:hdu 题目分类 (侵删)

转载:from http://blog.csdn.net/qq_28236309/article/details/47818349 基础题:1000.1001.1004.1005.1008.1012.1013.1014.1017.1019.1021.1028.1029. 1032.1037.1040.1048.1056.1058.1061.1070.1076.1089.1090.1091.1092.1093. 1094.1095.1096.1097.1098.1106.1108.1157.116