BZOJ3621: 我想那还真是令人高兴啊 复数运算
来源:互联网 发布:linux 占用内存 脚本 编辑:程序博客网 时间:2024/06/07 02:28
题意:给出一对三角形,已知其中一个是由另一个绕某一点旋转放缩而得到,求这个点的坐标。每个测试点有T(<=10)组数据。
一开始以为是计算几何,然而向量的旋转和放缩是两种操作,复数却可以一步完成。
对于复数a和b,a*b的几何意义为a与b长度相乘,极角相加。
那么本题就可以看成从旋转点出发,指向其中一个三角形顶点的三个复数向量乘以同一个复数后变成了从旋转点出发,指向另一个三角形顶点的三个复数向量。设出旋转点坐标和同乘的复数,枚举顶点的六种可能对应关系。列出三个方程,用前两个方程解出解,代到第三个方程中检验是否正确即可。
解方程需要用到复数除法。对于(a+bi)/(c+di),分子分母同乘(c-di)可进行分母有理化,
整理得结果为((ac+bd)/(cc+dd))+((bc-ad)/(cc+dd))i。
然而复数除法非常掉精度,取eps=1e-5都会WA,要1e-4才能过。。。
#include<cstdio>#include<cmath>using namespace std;#define y1 __y__struct cpx{ double a,b; cpx(const double &a=0,const double &b=0):a(a),b(b){} cpx(FILE* f){fscanf(f,"%lf%lf",&a,&b);} #define c ano.a #define d ano.b inline cpx operator + (const cpx &ano) const {return cpx(a+c,b+d);} inline cpx operator - (const cpx &ano) const {return cpx(a-c,b-d);} inline cpx operator * (const cpx &ano) const {return cpx(a*c-b*d,a*d+b*c);} inline cpx operator / (const cpx &ano) const { double temp=c*c+d*d; return cpx((a*c+b*d)/temp,(b*c-a*d)/temp); } inline bool operator == (const cpx &ano) const {return fabs(a-c)<1e-4&&fabs(b-d)<1e-4;} inline void operator() (FILE* f){fprintf(f,"%lf %lf\n",a,b);}}ans,a1,a2,a3;int t;inline bool check(const cpx &b1,const cpx &b2,const cpx &b3){ cpx __t=(b1-b2)/(a1-a2); ans=(a1*__t-b1)/(__t-cpx(1.0,0.0)); return (a3-ans)*__t==(b3-ans);}int main(){ scanf("%d",&t); while(t--) { a1=stdin,a2=stdin,a3=stdin; cpx b1(stdin),b2(stdin),b3(stdin); if(check(b1,b2,b3)) goto successed_to_match; if(check(b1,b3,b2)) goto successed_to_match; if(check(b2,b1,b3)) goto successed_to_match; if(check(b2,b3,b1)) goto successed_to_match; if(check(b3,b1,b2)) goto successed_to_match; if(check(b3,b2,b1)) goto successed_to_match; successed_to_match: ans(stdout); } return 0;}
0 0
- BZOJ3621: 我想那还真是令人高兴啊 复数运算
- BZOJ 3621 我想那还真是令人高兴啊 复数
- [数学 复数] BZOJ 3621 我想那还真是令人高兴啊
- 北航校赛 这样还真是令人高兴啊
- 今天真是高兴啊
- 尤文图斯快要降级了,真是高兴啊!
- 真是令人惊叹啊: 强悍的纸制周雕塑
- 真是令人惊叹啊: 强悍的纸制周雕塑 续集
- 淡定的我真是令人。。。看不下去啊
- 考试的生活还真是痛苦啊!
- csdn浏览量还真是可以啊。
- 还真是神一般的定义啊
- Baidu与Google也许还真是差那6个像素
- 我还真是少见多怪
- 还真是日记了
- 复数运算
- 复数运算
- 复数运算
- Spring IOC原理和流程
- C语言中对字符串操作的函数
- Android –图像检索
- 一个DV算法样例
- undefined reference to `vtable for boost::detail::thread_data_base'问题
- BZOJ3621: 我想那还真是令人高兴啊 复数运算
- Apache使用fcgid模块配置多个PHP版本共存
- EditTextPreference 设置 defaultValue 的数据类型显示问题
- AWS RDS 介绍 一)相关产品 二). 用户手册
- Linux "ls -l"文件列表权限详解
- 程序设计实训报告--小学生考试系统
- kobject和kset
- 获取VirtualBox COM对象失败,Unable to start the virtual device
- WebService WSDL