zoukankan      html  css  js  c++  java
  • hduoj 2073 无限的路

    无限的路

    Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 8383    Accepted Submission(s): 4384


    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
     
    【思路】*划分为求俩线的差
               *求每一条线时要求两种情况: 
                     1斜率为-1的  double sum = s*(s-1)*sqrt(2)/2;  sum += a*sqrt(2);
                     2斜率不为-1的部分:
                  for(i = s; i > 0; i--)        
    sum += sqrt((i-1)*(i-1) + i*i);
    AC代码:
     1 #include<cstdio>
     2 #include<cmath>
     3 double fun(int a, int b)
     4 {
     5     int i, s = a + b;
     6     //斜率为-1的线段的距离 
     7     double sum = s*(s-1)*sqrt(2)/2;
     8     sum += a*sqrt(2);
     9     //斜率不是-1的线段的长度 
    10     for(i = s; i > 0; i--)        
    11         sum += sqrt((i-1)*(i-1) + i*i);
    12     return sum;
    13 }
    14 int main()
    15 {
    16     int n;scanf("%d", &n);
    17     while(n--)
    18     {
    19         int x1, x2, y1, y2;
    20         scanf("%d %d %d %d", &x1, &y1, &x2, &y2);
    21         printf("%.3lf
    ", fabs(fun(x1, y1)-fun(x2, y2)));
    22     }
    23     return 0;
    24 }
  • 相关阅读:
    LeetCode "Jump Game"
    LeetCode "Pow(x,n)"
    LeetCode "Reverse Linked List II"
    LeetCode "Unique Binary Search Trees II"
    LeetCode "Combination Sum II"
    LeetCode "Divide Two Integers"
    LeetCode "First Missing Positive"
    LeetCode "Clone Graph"
    LeetCode "Decode Ways"
    LeetCode "Combinations"
  • 原文地址:https://www.cnblogs.com/123tang/p/5835756.html
Copyright © 2011-2022 走看看