https://www.lydsy.com/JudgeOnline/problem.php?id=3621

给定两个三角形,其中一个可以通过以某点为中心旋转并放缩的方式得到另一个,求这个中心

https://blog.csdn.net/PoPoQQQ/article/details/44346555

↑题解见这个博客。

get到了复数的特殊用法,原来旋转缩放都可以用复数实现的。因为复数相乘是极角相加、长度相乘,所以把点放到复平面上之后可以用一个复数点T代表缩放和旋转的系数,一个复数点P为中心点,列方程验证就行了。

我太智障了,最开始写的代码的验证方式特别复杂精度还有问题(我为什么要算出来三个中心点然后把三个中心点都比较一遍啊有毒吧),看了dalao的代码发现自己真实智障完全不用比较那么多,算出来两个比一下就可以了。

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<complex>
using namespace std;
#define LL long long
const double eps=0.0001;
typedef complex< double >cd;
cd a[][];
inline double mabs(double x){return x<?(-x):x;}
int main(){
//freopen("a.in","r",stdin);
int T;scanf("%d",&T);
while(T-->){
double x,y;
for(int i=;i<;++i){
for(int j=;j<;j++){
scanf("%lf%lf",&x,&y);
a[i][j]=cd(x,y);
}
}
cd ans=;bool f=;
for(int i=;i<;i++){
for(int j=;j<;j++){
if(i==j)continue;
cd z=(a[][i]-a[][j])/(a[][]-a[][]);
int w=-i-j;
cd po=(a[][]*z-a[][i])/(z-1.0);
cd zz=(a[][]-po)*z-(a[][w]-po);
if(mabs(zz.real())<eps&&mabs(zz.imag())<eps){ans=po;f=;break;}
}
if(f)break;
}
printf("%.4f %.4f\n",ans.real(),ans.imag());
}
return ;
}

BZOJ 3621: 我想那还真是令人高兴啊 计算几何 复数的更多相关文章

  1. 【BZOJ】3621: 我想那还真是令人高兴啊

    http://www.lydsy.com/JudgeOnline/problem.php?id=3621 题意:给两个三角形,问A能否通过旋转伸缩到B. #include <bits/stdc+ ...

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

    bzoj3621我想那还真是令人高兴啊 题意: T组数据,每组给出两个三角形各点坐标,要求求出一个点使第一个三角形可以绕这个点放缩和旋转得到另一个三角形.T≤10,坐标为≤10000的实数,数据保证三 ...

  3. BZOJ 4814 Luogu P3699 [CQOI2017]小Q的草稿 (计算几何、扫描线、set)

    题目链接 (BZOJ) http://lydsy.com/JudgeOnline/problem.php?id=4814 (Luogu) https://www.luogu.org/problem/P ...

  4. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  5. [No000003]现代版三十六计,计计教你如何做人

    <现代版三十六计,计计教你如何做人> …………………………………………………………………………………… 第1计施恩计 在人际交往中,见到给人帮忙的机会,要立马扑上去,像一只饥饿的松鼠扑向地 ...

  6. bzoj1021 [SHOI2008]Debt 循环的债务

    前天打了一场比赛,让我知道自己Dp有多弱了,伤心了一天,没刷bzoj. 昨天想了一天,虽然知道几何怎么搞,但我还是不敢写,让我知道自己几何有多弱了,伤心了一天,没刷bzoj 1021: [SHOI20 ...

  7. 【分享】改变未来的九大算法[pdf][清晰扫描版]

    [下载地址]http://www.colafile.com/file/1179688 图书信息:中文名: 改变未来的九大算法作者: 约翰·麦考密克译者: 管策图书分类: 软件资源格式: PDF版本: ...

  8. 简单却又复杂的FizzBuzz面试编程问题

    写这篇文章主要是因为偶然看到一篇关于stackoverflow公司的面经中提到了一个有趣的面试编程问题,如题所述:FizzBuzz问题.原文引用如下: “在一些公平的考验之后,我发现那些因为代码而抓狂 ...

  9. 翻译一篇关于jedis的文章

    翻译 自 http://www.baeldung.com/jedis-java-redis-client-libraryIntro to Jedis – the Java Redis Client L ...

随机推荐

  1. Tomcat权威指南-读书摘要系列8

    调试与疑难排查 解读日志文件 /conf/logging-properties 用RequestDumperValue来调试 查看Web通信流量 server.xml <Valve classN ...

  2. Jquery自定义滚动条插件

    下载地址:http://files.cnblogs.com/files/LoveOrHate/jquery.nicescroll.min.js <script src="jquery. ...

  3. zTree的简单例子

    <%@ page language="java" pageEncoding="UTF-8" %> <%@ include file=" ...

  4. PHP删除数组中空值

    array_filter   函数的功能是利用回调函数来对数组进行过滤,一直都以为用回调函数才能处理, 却没有发现手册下面还有一句,如果没有回调函数,那么默认就是删除数组中值为false的项目 代码: ...

  5. G - DNA sequence HDU - 1560

    题目链接: https://vjudge.net/contest/254151#problem/G AC代码: #include<iostream> #include<cstring ...

  6. sync 解释

    sync命令用于强制被改变的内容立刻写入磁盘,更新超块信息. 在Linux/Unix系统中,在文件或数据处理过程中一般先放到内存缓冲区中,等到适当的时候再写入磁盘,以提高系统的运行效率.sync命令则 ...

  7. Oracle 用脚本安装第二个数据库

    安装第二个数据库: 登录oracle用户进入家目录,添加配置环境变量: vi .bash_profier ORACLE_SID=prod2   临时环境变量: $export ORACLE_HOME= ...

  8. 用Java检测远程主机是否能被连接

    有人推荐使用java的Runtime.exec()方法来直接调用系统的Ping命令.也有人完成了纯Java实现Ping的程序,使用的是Java的NIO包(native io, 高效IO包).我个人认为 ...

  9. java 其它可选方法

    异常处理的一个原则时,只有当你在知道如何处理的情况下才捕获异常,异常处理的一个重要目标时将错误处理代码同错误发生的地点相分离. "被检查异常"强制你在还没准备好处理错误的时候被迫加 ...

  10. SpringMVC介绍及参数绑定

    本节内容: SpringMVC介绍 入门程序 SpringMVC架构 SpringMVC整合MyBatis 参数绑定 SpringMVC和Struts2的区别 一.SpringMVC介绍 1. 什么是 ...