【基础数学知识】UVa 11314 - Hardly Hard

Problem H

HARDLY HARD

You have been given the task of cutting out a quadrilateral slice of cake out of a larger, rectangular cake. You must find the slice with the smallest perimeter that satisfies the following constraints. If the cake is of size 10000-by-10000 units and is represented using the first quadrant of the Cartesian plane, then your slice is quadrilateral ABCD (see figure). Points A and B are fixed and will be given to you. Also, A,B will lie on a negatively sloping line. Furthermore, points C and D must lie on the positive y-axis and positive x-axis respectively, but it is up to you to determine where these two points should be. A,B,C,D will be distinct points.

Output the minimum perimeter of your slice of cake.

Input

On the first line you will be given n (1 ≤ n ≤ 100), the number of test cases. The following n lines each contain ax ay bx by (0 < ax, ay, bx, by ≤ 10000.0), the coordinates of points A and B respectively.

Output

For each test case, output the perimeter accurate to 3 decimal places on its own line.

题意:由一个矩形蛋糕切出一个四边形,要求周长最小;其中A,B两点坐标已给出,且C,D点要求在x,y轴正半轴。

分析:以x,y轴作对称点连接。证明很好证,两点之间线段最短嘛。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cmath>
 5 #define error 1e-8
 6 using namespace std;
 7 const int maxn = 10010;
 8
 9
10 double Get_len(double x1, double y1, double x2, double y2)
11 {
12     return sqrt((y2-y1)*(y2-y1) + (x2-x1)*(x2-x1));
13 }
14 int main()
15 {
16
17     int T;
18     scanf("%d", &T);
19     while(T--)
20     {
21         double ax, ay, bx, by;
22         scanf("%lf%lf%lf%lf", &ax, &ay, &bx, &by);
23         if(by < ay) {swap(ay, by); swap(ax, bx);}
24         double cx=ax, cy=-ay, dx=-bx, dy=by;
25         printf("%.3lf\n", Get_len(cx, cy, dx, dy)+Get_len(ax, ay, bx, by));
26     }
27     return 0;
28 }
时间: 2024-10-05 11:32:54

【基础数学知识】UVa 11314 - Hardly Hard的相关文章

UVA 11314 - Hardly Hard(数论)

题目链接:11314 - Hardly Hard 题意:给定A,B两点,求Y轴上一点C和X轴上一点D,使得该四边形周长最小. 思路:B以Y轴做对称点,A以X轴做对称点,然后两点相连就是其他三边的周长,因为两点间线段最短,然后再加上AB长度即可 代码: #include <stdio.h> #include <string.h> #include <math.h> int t; struct Point { double x, y; Point() {} Point(do

uva 11314 - Hardly Hard(坐标系问题)

题目链接:uva 11314 - Hardly Hard 题目大意:给出A,B两点,然后分别在y轴和x轴找一个D点和C点,使得A,B,C和D组成的四边形的周长最小. 解题思路:两点之间直线最短,将A'为A关于y轴的对称点,B'为B关于x轴的对称点,连接A'B'即为另外三条边的最短距离,然后AB的距离又是固定的. #include <cstdio> #include <cstring> #include <cmath> double xa, ya, xb, yb; dou

HTML5 Canvas核心技术图形动画与游戏开发(读书笔记)----第一章,基础知识

一,canvas元素 1 为了防止浏览器不支持canvas元素,我们设置“后备内容”(fallback content),下面紫色的字即为后备内容 <canvas id="canvas" width="600" height="300">您的浏览器不支持canvas,可以选择升级您的浏览器</canvas> 2 开发基于canvas的应用程序的最基本的几个操作 1),使用document.getElementById()方

[web建站] 极客WEB大前端专家级开发工程师培训视频教程

极客WEB大前端专家级开发工程师培训视频教程  教程下载地址: http://www.fu83.cn/thread-355-1-1.html 课程目录:1.走进前端工程师的世界HTML51.HTML5与HTML4的区别2.HTML5新增的主体结构元素3.HTML5新增的的非主体结构元素 4.HTML5表单新增元素与属性5.HTML5表单新增元素与属性(续)6.HTML5改良的input元素的种类 7.HTML5增强的页面元素8.HTML5编辑API之Range对象(一)9.HTML5编辑API之

软工第0次个人作业

一.你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢? 首先说明,在进入大学之前,对于计算机专业的相关问题一无所知,对编程一无所知,对于计算机的理解仅仅存在于玩游戏和瞎捣鼓的层面上,唯一感兴趣或者自己能够想到的问题就是计算机的硬件是如何处理我们的操作指令的,软件又是通过怎样的方式写成的. 抱着这样的观点,以及相比于其他的工科专业,计算机专业给我有一种高大上的感觉,充满科技气息,再加上口耳相传的计算机专业人员在未来一定会发挥重大作用,报酬丰厚等等原因,最终选择了计算机专业,这也是我的第一

SVM初学

一.            一点基础数学知识 现在硕士都快毕业了,反而将自己的许多数学知识忘的差不多了,所以,现在决心再捡起来,以补齐自己的数学短板,为以后的研究做好铺垫吧.现在结合自己学习SVM.MLC.ANN等机器学习方法来回顾以前的数学知识以及补充新的数学知识. 在SVM中,首先面临的问题是计算样本点到分类超平面的距离,现在就从最简单的点到直线的距离.点到平面的距离等内容开始回顾. 1)  点到直线的距离计算公式 假设直线L的方程为: 那么,点(x0,y0)到直线L的距离为d 如点(2,2

《Deep Learning》(深度学习)中文版 开发下载

<Deep Learning>(深度学习)中文版开放下载   <Deep Learning>(深度学习)是一本皆在帮助学生和从业人员进入机器学习领域的教科书,以开源的形式免费在网络上提供, 这本书是由学界领军人物 Ian Goodfellow.Yoshua Bengio 和 Aaron Courville 合力打造. 书籍原版英文目录: Deep Learning Table of Contents Acknowledgements Notation 1 Introduction

机器学习的数学基础(1)--Dirichlet分布

机器学习的数学基础(1)--Dirichlet分布 这一系列(机器学习的数学基础)主要包括目前学习过程中回过头复习的基础数学知识的总结. 基础知识:conjugate priors共轭先验 共轭先验是指这样一种概率密度:它使得后验概率的密度函数与先验概率的密度函数具有相同的函数形式.它极大地简化了贝叶斯分析. 如何解释这句话.由于 P(u|D) = p(D|u)p(u)/p(D)   (1.0式) 其中D是给定的一个样本集合,因此对其来说p(D)是一个确定的值,可以理解为一个常数.P(u|D)是

(转)机器学习的数学基础(1)--Dirichlet分布

转http://blog.csdn.net/jwh_bupt/article/details/8841644 这一系列(机器学习的数学基础)主要包括目前学习过程中回过头复习的基础数学知识的总结. 基础知识:conjugate priors共轭先验 共轭先验是指这样一种概率密度:它使得后验概率的密度函数与先验概率的密度函数具有相同的函数形式.它极大地简化了贝叶斯分析. 如何解释这句话.由于 P(u|D) = p(D|u)p(u)/p(D)   (1.0式) 其中D是给定的一个样本集合,因此对其来说