UVa 10250 The Other Two Trees
还是读了很长时间的题,不过题本身很简单。
可以把四棵树想象成正方形的四个顶点,已知两个相对顶点的坐标,求另外两个坐标。
不过,原题可没直接这么说,中间需要一些小证明。
题中说有一个平行四边形然后分别以四条边为边长向外作正方形,四棵树就在四个正方形中心的位置。
这是我用几何画板画的图。
下面证△FOE≌△HGO
设CD=2a,BC=2b
∴EF=OH=a,
OF=HG=b
易知∠DFO=∠OHB
∴∠EFO=∠OHG=∠DFO+90°
∴△FOE≌△HGO(边角边)
∴∠E=∠GOH
∠EOG=∠EOF+∠DFO+∠E=90° (因为再加上∠DFE就等于内角和180°了)
综上,OE=OG且OE⊥OG
由于对称性,四棵树就构成了个正方形。
下面说说算法,利用旋转。我是用复数做的。
比如说一个复平面的向量a+bi乘上i所得向量就是逆时针旋转90°所得向量,乘上-i就是顺时针。
可以计算出中点O的坐标,然后向量OG=Gx-Ox+(Gy-Oy)i,乘上单位向量i得Oy-Gy+(Gx-Ox)i。
在加上O的坐标就得到E的坐标(Ox+Oy-Gy,Oy-Ox+Gx)。
同理也可以很容易求出顺时针转90°后点的坐标。
10250
Problem E
The Other TwoTrees
Input: standard input
Output: standard output
Time Limit: 2 seconds
You have a quadrilateral(四边形) shaped land whose opposite fences are ofequal length(四边形对边相等,也就是平行四边形). You have four neighborswhose lands are exactly adjacent(邻近的) to your four fences, that means you have acommon fence with all of them. For example if you have a fence of length d inone side, this fence of length d is also the fence of theadjacent neighbor on that side. The adjacent neighbors have no fence in commonamong themselves and their lands also don’t intersect(相交). The main difference between their land andyour land is that their lands are all square(正方形) shaped. All your neighbors have a tree at the center oftheir lands. Given the Cartesian coordinates(笛卡尔坐标) of trees of two opposite neighbors, you will have tofind the Cartesian coordinates of the other two trees.
Input
The input file contains several lines ofinput. Each line contains four floating point or integer numbers x1,y1, x2, y2, where (x1, y1), (x2, y2) are thecoordinates of the trees of two opposite neighbors. Input is terminated by endof file.
Output
For each line of input produce one line ofoutput which contains the line “Impossible.” without thequotes, if you cannot determine the coordinates of the other two trees.Otherwise, print four floating point numbers separated by a single space withten digits after the decimal point ax1, ay1, ax2, ay2, where (ax1,ay1) and (ax2, ay2) are the coordinates of the othertwo trees. The output will be checked with special judge program, so don’tworry about the ordering of the points or small precision errors. The sampleoutput will make it clear.
Sample Input
10 0 -10 0
10 0 -10 0
10 0 -10 0
Sample Output
0.000000000010.0000000000 0.0000000000 -10.0000000000
0.000000000010.0000000000 -0.0000000000 -10.0000000000
0.0000000000-10.0000000000 0.0000000000 10.0000000000
(World FinalWarm-up Contest, Problem Setter: Shahriar Manzoor)
AC代码:
//#define LOCAL
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std; int main(void)
{
#ifdef LOCAL
freopen("10250in.txt", "r", stdin);
#endif double x[], y[], midx, midy;
while(scanf("%lf %lf %lf %lf", &x[], &y[], &x[], &y[]) == )
{
midx = (x[] + x[]) / ;
midy = (y[] + y[]) / ;
x[] = midx + midy - y[];
y[] = x[] - midx + midy;
x[] = midx - midy + y[];
y[] = midx + midy - x[];
printf("%.10lf %.10lf %.10lf %.10lf\n", x[], y[], x[], y[]);
}
return ;
}
代码君
UVa 10250 The Other Two Trees的更多相关文章
- 【例题 6-17 UVa 10562】Undraw the Trees
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 模拟+递归 [代码] #include <bits/stdc++.h> using namespace std; con ...
- UVA题目分类
题目 Volume 0. Getting Started 开始10055 - Hashmat the Brave Warrior 10071 - Back to High School Physics ...
- [LintCode]——目录
Yet Another Source Code for LintCode Current Status : 232AC / 289ALL in Language C++, Up to date (20 ...
- (Step1-500题)UVaOJ+算法竞赛入门经典+挑战编程+USACO
http://www.cnblogs.com/sxiszero/p/3618737.html 下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年 ...
- ACM训练计划step 1 [非原创]
(Step1-500题)UVaOJ+算法竞赛入门经典+挑战编程+USACO 下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成 ...
- 算法竞赛入门经典+挑战编程+USACO
下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成.打牢基础,厚积薄发. 一.UVaOJ http://uva.onlinej ...
- Uva 10007 / HDU 1131 - Count the Trees (卡特兰数)
Count the Trees Another common social inability is known as ACM (Abnormally Compulsive Meditation) ...
- UVA.122 Trees on the level(二叉树 BFS)
UVA.122 Trees on the level(二叉树 BFS) 题意分析 给出节点的关系,按照层序遍历一次输出节点的值,若树不完整,则输出not complete 代码总览 #include ...
- UVa 10562 Undraw the Trees 看图写树
转载请注明: 仰望高端玩家的小清新 http://www.cnblogs.com/luruiyuan/ 题目大意: 题目传送门:UVa 10562Undraw the Trees 给定字符拼成的树,将 ...
随机推荐
- Asp.net MVC 实现图片上传剪切
使用技术:Asp.net MVC与jquery.uploadify,Jcrop 首先上页面 01 <strong><!DOCTYPE html> 02 <html> ...
- JDK各个版本下载页面
http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html 需 ...
- 如何做好一名DBA【转】
我一直有一个观点:程序是暂时的,而数据是永恒的.所以我一直都认为数据的重要性在很多企业中都远远高于应用程序,在多年的工作实践中努力做好DBA的工作.而要做好一名DBA,必须要清楚作为一名DBA的职责. ...
- php怎么获取checkbox复选框的内容?
由于checkbox属性,所有必须把checkbox复选择框的名字设置为一个如果checkbox[],php才能读取,以数据形式,否则不能正确的读取checkbox复选框的值哦. <form n ...
- 2014多校第六场 1005 || HDU 4925 Apple Tree
题目链接 题意 : 给你一块n×m的矩阵,每一个格子可以施肥或者是种苹果,种一颗苹果可以得到一个苹果,但是如果你在一个格子上施了肥,那么所有与该格子相邻(指上下左右)的有苹果树的地方最后得到的苹果是两 ...
- JAVA类型信息——反射机制
JAVA类型信息——反射机制 一.反射机制概述 1.反射机制:就是java语言在运行时拥有的一项自我观察的能力,java通过这种能力彻底了解程序自身的情况,并为下一步的动作做准备. 2.反射机制的功能 ...
- CentOS系统常用命令
1.进入目录命令 cd /usr/bin //进入etc目录 cd .. //切换到上一层目录 cd / //进入主目录 2.新建文件命令 比如进入某个目录后执行 vim test 2.查看运行的项目 ...
- Minifilter微过滤框架:框架介绍以及驱动层和应用层的通讯
minifilter是sfilter后微软推出的过滤驱动框架.相比于sfilter,他更容易使用,需要程序员做的编码更简洁. 系统为minifilter专门制作了一个过滤管理器,这个管理器本身其实是一 ...
- VCL设计方法概论(自己总结了9条),以及10个值得研究的控件 good
VCL设计方法概论 1. 把Delphi对象改造成一个Windows窗口,主要是要设置Handle和回调函数.在创建一个Windows窗口后,将其句柄赋值给Delphi对象的属性,这个并不难,相当于从 ...
- 针对安卓java入门:运算符和表达式
逻辑运算符 &&和&判断是一样的,区别在于过程,&会把整个过程算一遍,&&一旦碰到false就不会往下