bzoj3621我想那还真是令人高兴啊

bzoj3621我想那还真是令人高兴啊

题意:

T组数据,每组给出两个三角形各点坐标,要求求出一个点使第一个三角形可以绕这个点放缩和旋转得到另一个三角形。T≤10,坐标为≤10000的实数,数据保证三角形不用平移,答案保留三位小数。

题解:

复数既是一种数,又可以当做一种独特的二维向量,因为其数的特点可以用来解方程,又因为其向量的特点可以表示二维的点和变换。两个复数的积在几何上定义为把它转化为向量后极角相加,长度相乘,正可以用来表示放缩和旋转变换。因此设A,B,C为变换前三角形三个顶点(用复数表示),T为变换复数,P为绕的那个点,A‘,B‘,C‘表示变换后的点。于是可以列方程(A-P)*T=(A‘-P) (B-P)*T=(B‘-P) (C-P)*T=(C‘-P),我们可以枚举A,B,C分别是第一个三角形的哪个顶点,然后联立前两道解出T代入第三道验证。然而本傻逼忘记枚举了导致WA了好几发,顺便安利STL的complex类,已经包装好了复数的常用运算。

代码:

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <algorithm>
 4 #include <queue>
 5 #include <complex>
 6 #define inc(i,j,k) for(int i=j;i<=k;i++)
 7 using namespace std;
 8
 9 complex <double> a,b,c,d,e,f,t,p,g;
10 int T;
11 int main(){
12     scanf("%d",&T); while(T--){
13         double x,y;
14         scanf("%lf%lf",&x,&y); a.real(x); a.imag(y);
15         scanf("%lf%lf",&x,&y); b.real(x); b.imag(y);
16         scanf("%lf%lf",&x,&y); c.real(x); c.imag(y);
17         scanf("%lf%lf",&x,&y); d.real(x); d.imag(y);
18         scanf("%lf%lf",&x,&y); e.real(x); e.imag(y);
19         scanf("%lf%lf",&x,&y); f.real(x); f.imag(y);
20         g.real(1.000000),g.imag(0.000000); t=(e-d)/(b-a); p=(a*t-d)/(t-g);
21         if(abs(((c-p)*t-(f-p)).real())<1e-4&&abs(((c-p)*t-(f-p)).imag())<1e-4){
22             printf("%.6lf %.6lf\n",p.real(),p.imag()); continue;
23         }
24         swap(b,c); t=(e-d)/(b-a); p=(a*t-d)/(t-g);
25         if(abs(((c-p)*t-(f-p)).real())<1e-4&&abs(((c-p)*t-(f-p)).imag())<1e-4){
26             printf("%.6lf %.6lf\n",p.real(),p.imag()); continue;
27         }
28         swap(a,b); t=(e-d)/(b-a); p=(a*t-d)/(t-g);
29         if(abs(((c-p)*t-(f-p)).real())<1e-4&&abs(((c-p)*t-(f-p)).imag())<1e-4){
30             printf("%.6lf %.6lf\n",p.real(),p.imag()); continue;
31         }
32         swap(b,c); t=(e-d)/(b-a); p=(a*t-d)/(t-g);
33         if(abs(((c-p)*t-(f-p)).real())<1e-4&&abs(((c-p)*t-(f-p)).imag())<1e-4){
34             printf("%.6lf %.6lf\n",p.real(),p.imag()); continue;
35         }
36         swap(a,b); t=(e-d)/(b-a); p=(a*t-d)/(t-g);
37         if(abs(((c-p)*t-(f-p)).real())<1e-4&&abs(((c-p)*t-(f-p)).imag())<1e-4){
38             printf("%.6lf %.6lf\n",p.real(),p.imag()); continue;
39         }
40         swap(b,c); t=(e-d)/(b-a); p=(a*t-d)/(t-g);
41         if(abs(((c-p)*t-(f-p)).real())<1e-4&&abs(((c-p)*t-(f-p)).imag())<1e-4){
42             printf("%.6lf %.6lf\n",p.real(),p.imag()); continue;
43         }
44     }
45     return 0;
46 }

20160609

时间: 2024-12-21 02:16:49

bzoj3621我想那还真是令人高兴啊的相关文章

【UR #2】树上GCD

这道题是有根树点分治+烧脑的容斥+神奇的分块 因为是规定1为根,还要求LCA,所以我们不能像在无根树上那样随便浪了,必须规定父亲,并作特殊讨论 因为gcd并不好求,所以我们用容斥转化一下,求x为gcd的因数的个数,这样就可以随便统计了,个人觉得代码比题解要好懂. 又因为统计完重心的所有子树,还有重心的父亲,所以在这个分支块内沿着重心的父亲一路向上爬,这时候重心的子树到重心的父亲的距离是变的,所以我们用神奇的分块大法,分类讨论,$<=\sqrt{n}$使用数组记录答案,方便以后再用到的时候统计,$

般若与慈悲

在讨论空性的时候,我们发现我们是把自己的成见.观念和对事物的看法加在现象上,而不是如实去看事物.一旦我们能看穿自己的成见之障,我们就会明白那是不必要的迷惑作法——在经验上加柄,却未考虑到合适与否.换言之,成见是一种保证.当我们看到某物时,我们便立即为它命名.归类.但色即是空:它无需我们用分类的方式来令它本性俱现,或让它如实存在.色的本身是空无成见的. 但空亦是色.这是说在此解悟的阶段,我们太着重见到空无成见之色.我们想要证得这种慧见,好像见色为空是一种我们能强令自心办到的事.我们寻空,以致空也变

HTML5本地存储LocalStorage和sessionStorage

以前用wordpress做博客的时候,我做了个点赞的功能.设计这个点赞功能的时候,为防止访客不断刷赞,得做个时间间隔限制,首先我的设计方案是在数据库里记录ip和点赞的时间,后来一想那还得维护数据库(其实是觉得都没人点赞还弄得那么严格搞什么),果断改成把数据放到本地保存. 本地存储数据首先想到得是cookie和html5的 localStorage. cookie兼容性好,但是存储的数据量太少;localStorage存储量大,但是兼容性不是很好,毕竟ie6之流还是有不少份额的.最后考虑到 htm

自控力

您下载的该电子书来自:TXT赛看 欢迎访问: www.txtsk.com.cn 你是否有迟迟未打的电话? 你是否瞻前顾后,迟迟迈不出行动的脚步? 你是否常因无法掌控情绪而责备自己? 你是否处事一般都很冷静,心里或许有很多自己的想法, 但是不会轻易暴露出来,不到忍无可忍,不会发脾气的.特别在 公司? 你是否会因心情不好影响工作或会因工作影响心情? 以上现象均为缺乏自控力所致.在我近10年的培训生涯 中,学员们会请教我各种各样的问题,其中在每一场演讲中被 提及的次数最多的问题便是——"我该如何增强自

2017.02.04,读书,2017第二本《把时间当作朋友》读书笔记

前言: 这是春节期间读完的一本书,也是今年的第二本,严格来说是大年初一那天看完的.春节,这个农业时代的传统,已经感到不适应时代(我)了.以公历来算,今年已经过去一个月了,农历却才刚开始,才进入的2017年节奏不得不打断一下.还好可以睡大觉. 以上是关于春节. 以下是关于这本书,依然是李笑来老师的,充满方法论的书.全文6657字,kindle版,花费大概8个小时,读起来一口气上五楼不费劲,推荐. ? 第0章 困境(程序员永远从0开始) 1 问题 最后期限没有完成的原因 没有按时开始执行任务 错误估

翻译一篇关于jedis的文章

翻译 自 http://www.baeldung.com/jedis-java-redis-client-libraryIntro to Jedis – the Java Redis Client Library 介绍 关于jedis - java redis客户端库 1. OverviewThis article is an introduction to Jedis, a client library in Java for Redis – the popular in-memory dat

太帅气啦~多边形教程哦,转载~

低多边形(Low-Poly)字体设计是目前最新.最火的一个设计趋势.低多边形字体设计主要是基于有少量多边形的3D网格,同时结合一些渲染技术和灯光效果,使这些网格看上去像纸工艺或折纸作品. 低多边形通常需要使用3D软件来实现,但这篇教程将教会大家如何使用基本的PS工具来实现它的2D简化版,同时为了使低多边形效果更加精美,我们会用到一个非常简单的App- Image Triangulator App(别急哟,下方会有下载地址).以下为神器的部分功能和成果展现:) 多边形是今年很火的一种设计,同学们也

Unity3D 画笔实现系列01-LineRender

前言:刚从Python转到U3D时,第一个项目涉及到画线,刚开始想那还不简单吗,不就是获取位置后着色吗,H5中的Canvas就能实现,当我看了Unity的文档后一脸懵逼,居然没有相关的方法.没办法只能在网上找,涉及到画线的很多,各种坑. Unity画线最简单的实现方法LineRender组件: LineRender实现起来比较简单, 1 public class line : MonoBehaviour 2 { 3 /* 4 LineRenderer画线优点是简单,易控制,在移动端效果较好 5

20165336 我期望的师生关系

我期望的师生关系 一:参考<老师能提供什么帮助>有感 人生就是喜欢的事情一般不重要,重要的事情一般我们都不会喜欢.因此我们不用去想,这件事喜不喜欢.那件事没兴趣,因为当你不喜欢一件事的时候,恰巧在告诉你,也许是我们生命中最重要的事情! 喜欢的事情不重要,重要的事情不喜欢 一个心理研究曾经表明人在做持续一件事到七天的时候就会产生依赖感:二十一天就会形成习惯:九十天这件事会成为你生命中无法分割的一部分.所以干一件事贵在坚持,坚持到底便是成功. 二:我印象深刻的老师 印象深刻老师的优点 高中的数学老