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

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

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

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

Author

Lily

Source

浙江工业大学网络选拔赛

题目大意:按照图上所示,给你两点坐标,求两点间的折线距离。

思路:利用递推。这里,模拟了从(0,0)点到(x,y)点折线路线递推的过程。

设i为横坐标,j为纵坐标。则路径为 先右下到纵坐标为0,再一步到达横

坐标为0的,纵坐标为原横坐标+1的位置。

所以直接模拟递推求。用ans[x][y]保存(0,0)点到(x,y)点的距离。最终

结果为:fabs(ans[x1][y1]-ans[x2][y2])。

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cmath>
using namespace std;

double ans[220][220];

int main()
{
    for(int j = 1; j < 200; j++)
    {
        for(int i = 0; i <= j; i++)
        {
            if(i == 0)
                ans[i][j] = ans[j-1][i] + sqrt(1.0*j*j+1.0*(j-1)*(j-1));
            else
                ans[i][j-i] = ans[i-1][j-i+1] + sqrt(2.0);
        }
    }
    int N;
    int x1,y1,x2,y2;
    cin >> N;
    while(N--)
    {
        cin >> x1 >> y1 >> x2 >> y2;
        printf("%.3lf\n",fabs(ans[x1][y1]-ans[x2][y2]));
    }

    return 0;
}
时间: 2024-10-11 21:57:53

HDU2073 无限的路【水题】【递推】的相关文章

UVa 11040 Add bricks in the wall (水题递推)

题意:给定一个金字塔,除了最后一行,每个数都等于支撑它的两个数的和,现在给奇数行的左数奇数位置,求整个金字塔. 析:很容易看出来,从下往上奇数行等于 a[i][j] = (a[i-2][j-1] - a[i][j-1] - a[i][j+1]) / 2;然后偶数行就推出来了. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio> #include <string&

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

HDU-2073 无限的路

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

Luogu P1057 传球游戏(dp 递推)

P1057 传球游戏 题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏. 游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球,每个同学可以把球传给自己左右的两个同学中的一个(左右任意),当老师再次吹哨子时,传球停止,此时,拿着球没有传出去的那个同学就是败者,要给大家表演一个节目. 聪明的小蛮提出一个有趣的问题:有多少种不同的传球方法可以使得从小蛮手里开始传的球,传了m次以后,又回到小蛮手里.两种传球方法被视

BZOJ 4204 取球游戏 循环矩阵优化期望递推

题意:链接 方法:循环矩阵优化期望递推. 解析: 这题递推没啥,主要是循环矩阵优化 我们发现,如果直接上矩阵优化的话是n^3log,所以铁定是过不了了的,然后再观察一下这道题我们要求幂的矩阵,发现他是这种形式 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 1 1 0 0 0 1 每一行都是上一行向右窜了一位 所以我们可以用一个一维数组代表这个循环矩阵 并且循环矩阵求和,乘积还是循环矩阵 所以我们就可以用循环矩阵来优化掉一个n 复杂度即变为了n^2log 可过. 代码

[luogu]P1066 2^k进制数[数学][递推][高精度]

[luogu]P1066 2^k进制数 题目描述 设r是个2^k 进制数,并满足以下条件: (1)r至少是个2位的2^k 进制数. (2)作为2^k 进制数,除最后一位外,r的每一位严格小于它右边相邻的那一位. (3)将r转换为2进制数q后,则q的总位数不超过w. 在这里,正整数k(1≤k≤9)和w(k<W≤30000)是事先给定的. 问:满足上述条件的不同的r共有多少个? 我们再从另一角度作些解释:设S是长度为w 的01字符串(即字符串S由w个“0”或“1”组成),S对应于上述条件(3)中的q

hdu2073递推题

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

HDU2520 我是菜鸟,我怕谁【水题】【递推】

我是菜鸟,我怕谁 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 7260    Accepted Submission(s): 4247 Problem Description lin2144是一只小菜鸟,都是笨鸟先飞,lin2144想来个菜鸟先飞,他从0点出发 一开始的飞行速度为1m/s,每过一个单位时间lin2144的飞行速度比上

HDU2156 分数矩阵【水题】【递推】

分数矩阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4769    Accepted Submission(s): 2882 Problem Description 我们定义如下矩阵: 1/1 1/2 1/3 1/2 1/1 1/2 1/3 1/2 1/1 矩阵对角线上的元素始终是1/1,对角线两边分数的分母逐个递增. 请求出这个