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. Web性能优化系列(3):如何延迟加载JS

    本文由 伯乐在线 - J.c 翻译,sunbiaobiao 校稿.未经许可,禁止转载!英文出处:www.feedthebot.com.欢迎加入翻译小组. 延迟加载JavaScript JavaScri ...

  2. order by 字段自动填写脚本

    新版 firefox 中的 hackbar 没有 order by 字段填写, 所以就有了这个: =begin pod sql注入中自动输出order by 的位数 =end pod sub MAIN ...

  3. js自定制周期函数

    function mySetInterval(fn, milliSec,count){ function interval(){ if(typeof count==='undefined'||coun ...

  4. 利用shell找出15分钟内修改的文件

    如果你的文件只是生成不会修改的话,可以这样: find * -mmin -15 2>/dev/null 如果可能修改,则需要这样(先创建一个 15 分之前的时间戳的文件,然后找比这个文件新的文件 ...

  5. LCT摘要

    介绍.用途 LCT是树链剖分中的一种,又叫实链剖分.动态树,常用于维护动态的树.森林. 维护方式 LCT并不直接维护原树,而是用一堆splay作为辅助树来维护.原树中的一条实链上的点在一棵splay中 ...

  6. Java环境的搭建及用记事本来揭露下JDK到底做了些什么

    和我一样的新手想学Java就从自己搭建环境开始,请看完这边文章,我搜集资料的整合. Java的标准版本是Java SE,所说的JDK(Java Development Kits)就是Java SE的开 ...

  7. 文字小于12px时,设置line-height不居中问题

    设置了文字了小于12px时,会存在设置了line-height的不生效的问题,主要是由于基线的问题,这篇文章解释的很清楚,有兴趣的可以看下https://blog.csdn.net/q12151634 ...

  8. oracle数据库_实例_用户_表空间之间的关系

    基础概念:Oracle数据库.实例.用户.表空间.表之间的关系 数据库:Oracle数据库是数据的物理存储.这就包括(数据文件ORA或者DBF.控制文件.联机日志.参数文件).其实Oracle数据库的 ...

  9. 输出联系变化的数字seq

    主要作用:输出联系变化的数字格式:Seq 分割符号 开始 间隔 结束开始默认是1,间隔默认是1,分隔符默认回车一位是结束,两位首末,三位首间隔末,没有四位,开始可以是负数主要参数:-f 指定格式打印- ...

  10. 3种高效的Tags标签系统数据库设计方案分享

    需求背景 目前主流的博客系统.CMS都会有一个TAG标签系统,不仅可以让内容链接的结构化增强,而且可以让文章根据Tag来区分.相比传统老式的Keyword模式,这种Tag模式可以单独的设计一个Map的 ...