BZOJ 3564 信号增幅仪

题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3564

题意:给出平面上n个点,画出一个椭圆,椭圆的长轴是短轴的p倍,且长轴的方向为x轴逆时针旋转a度。求这个椭圆短轴的最小值使得可以覆盖所以点。

思路:先将所有点顺时针旋转a,然后所有点的x缩为原来的1/p。然后就是最小圆覆盖。

 

const int N=50005;struct point
{double x,y;point(double _x=0,double _y=0){x=_x;y=_y;}point operator-(point a){return point(x-a.x,y-a.y);}point operator+(point a){return point(x+a.x,y+a.y);}double operator*(point a){return x*a.y-y*a.x;}point operator*(double t){return point(x*t,y*t);}point operator/(double t){return point(x/t,y/t);}point zhuan(double ang){return point(x*cos(ang)+y*sin(ang),x*sin(ang)-y*cos(ang));}point verl(){return point(-y,x);}
};point p[N];
int n;double dis(point a,point b)
{return sqrt(sqr(a.x-b.x)+sqr(a.y-b.y));
}int sgn(double x)
{if(x>1e-20) return 1;if(x<-1e-20) return -1;return 0;
}point cross(point a,point b,point p,point q)
{double s1=(q-a)*(p-a);double s2=(p-b)*(q-b);return (a*s2+b*s1)/(s1+s2);
}point get(point a,point b,point c)
{double x=(b-a)*(c-a);if(sgn(x)==0){double ab=dis(a,b);double bc=dis(b,c);double ac=dis(a,c);if(sgn(ab-bc)>=0&&sgn(ab-ac)>=0) return (a+b)/2;if(sgn(bc-ab)>=0&&sgn(bc-ac)>=0) return (b+c)/2;return (a+c)/2;}point M1=(a+b)/2,v1=(a-b).verl();point M2=(b+c)/2,v2=(b-c).verl();return cross(M1,M1+v1,M2,M2+v2);
}int main()
{scanf("%d",&n);int i;for(i=0;i<n;i++) scanf("%lf%lf",&p[i].x,&p[i].y);double ang,scal;scanf("%lf%lf",&ang,&scal);ang=ang/180*PI;for(i=0;i<n;i++){p[i]=p[i].zhuan(ang);p[i].x/=scal;}double r=0;point c=p[0];for(i=1;i<n;i++) if(dis(p[i],c)>r+1e-10){c=p[i]; r=0;int j;for(j=0;j<i;j++) if(dis(p[j],c)>r+1e-10){c=(p[i]+p[j])/2;r=dis(p[i],p[j])/2;int k;for(k=0;k<j;k++) if(dis(p[k],c)>r+1e-10){c=get(p[i],p[j],p[k]);r=max(dis(p[i],c),max(dis(p[k],c),dis(p[j],c)));}}}printf("%.3lf\n",r);
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/252546.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CentOS 7 搭建JAVA环境

安装环境&#xff1a; LSB Version: :core-4.1-amd64:core-4.1-noarch Distributor ID: CentOS Description: CentOS Linux release 7.3.1611 (Core) Release: 7.3.1611 Codename: Core 开始 运行java -version 检查系统是否安装JRE 或JDK&#xff0c;有则卸载系统自带JAVA包输…

串口波形分析

UART口发出数据按字节发送&#xff0c;发送数据8bit&#xff0c;实际量出波形为10bit&#xff0c;软件底层驱动会自动加上起始位和停止位各1bit&#xff0c;起始位为0&#xff0c;停止位为1。下图为用串口工具发送的数据和用示波器所量波形。 发送数据&#xff1a;0x34 0x43 示…

SpringBoot之MongoTemplate的查询可以怎么耍

学习一个新的数据库&#xff0c;一般怎么下手呢&#xff1f;基本的CURD没跑了&#xff0c;当可以熟练的增、删、改、查一个数据库时&#xff0c;可以说对这个数据库算是入门了&#xff0c;如果需要更进一步的话&#xff0c;就需要了解下数据库的特性&#xff0c;比如索引、事物…

这可能是我见过最详细的快速排序!

关于快速排序&#xff0c;网上&#xff0c;和维基都有完成的解释&#xff0c;他们都是。。。。。。&#xff0c;俺觉得都是&#xff0c;太过于总结话语在概述一些东西&#xff1b; 而我却从最本质的东西&#xff0c;一步一步的深入&#xff1b;在深入的学习过程中&#xff0c;我…

LINQ to SQL 实现 GROUP BY、聚合、ORDER BY

前言 本示例主要实现 LINQ 查询&#xff0c;先分组&#xff0c;再聚合&#xff0c;最后在排序。示例很简单&#xff0c;但是使用 LINQ 却生成了不同的 SQL 实现。 1) 采用手动编写 SQL 实现 SELECT ROW_NUMBER() OVER(ORDER BY T.RealTotal DESC) AS SN, * FROM ( SELECT (S…

Mysql之事务

什么是事务 假如你下了一笔订单&#xff0c;会有以下数据库操作&#xff1a; 1. 生成一笔订单记录 2. 减少库存 3. 从你的账户中减少金额 4. 生成支付记录 这边的四个操作缺一不可&#xff0c;一旦某一个操作出现异常&#xff0c;则全部操作都需要全部回滚。而事务的作…

JVM垃圾回收机制总结

对于垃圾回收机制我先抛出三个问题&#xff1a; ①哪些内存需要回收&#xff1f; ②什么时候回收&#xff1f; ③如何回收&#xff1f; 下面我们主要针对这三个问题来研究JVM GC 一、哪些内存需要回收&#xff1f; 1.JAVA使用可达性分析法来判断对象是否需要回收。 这个算法的基…

虚拟机增加内存方法

楼主由于要在虚拟机里面装一个oracle&#xff0c;在安装过程中&#xff0c;提示物理内存不符合最低标准&#xff0c;如图1. 图1 因为懒得新建一个虚拟机了&#xff0c;所以考虑给虚拟机新增磁盘空间。 首先说明&#xff0c;新增磁盘空间&#xff0c;必须保证当前虚拟机里每个新…

myBatis xml if、where、if-else?、foreach 心得

MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其它类似框架的经验&#xff0c;你就能体会到根据不同条件拼接 SQL 语句的痛苦。例如拼接时要确保不能忘记添加必要的空格&#xff0c;还要注意去掉列表最后一个列名的逗号。利用动态 SQL 这一特性可以彻底摆脱这…

bzoj千题计划213:bzoj2660: [Beijing wc2012]最多的方案

http://www.lydsy.com/JudgeOnline/problem.php?id2660 很容易想到是先把n表示成最大的两个斐波那契数相加&#xff0c;然后再拆分这两个斐波那契数 把数表示成斐波那契进制的形式&#xff0c;第i位表示有没有第i个斐波那契数 比如16133 001001 那么拆分一个数就是把一个1…

面对对象-封装

private 私有的 package/friendly/default 不写 protected 受保护的 public 公共的 那么什么情况该用什么修饰符呢&#xff1f;从作用域来看&#xff0c;public能够适用所有的情况。 但是大家在工作的时候&#xff0c;又不会真正全部都适用public,那么到底什么情况改用什么修饰…

本文详解5G是个什么鬼,程序员都准备好了吗?

无线移动通讯发展历史 最近5G的概念炒的如火如荼&#xff0c;为此&#xff0c;华为和高通还干了一仗。这篇文章从技术层面给大家分析&#xff0c;什么是5G&#xff0c;它和4G比&#xff0c;高级在哪里&#xff1f; 我们来看看移动互联网的技术发展&#xff1a; 然后我们在来看看…

安装kerberos报错 error: command 'gcc' failed with exit status 1

pip install kerberos 报错&#xff1a;error: command gcc failed with exit status 1 安装环境工具 yum install gcc libffi-devel python-devel openssl-devel 再次安装kerberos安装成功 转载于:https://www.cnblogs.com/panbc/p/8268574.html

jquery正则表达式验证:验证全是数字

需求说明&#xff1a; 前端页面使用正则表达式验证输入框中输入的内容全是数字。 代码说明&#xff1a; 这里只介绍正则表达式&#xff0c;其他部分的代码不做介绍。如果有其他需要自行修改即可。 步骤一&#xff1a;建立一个页面可以是html、jsp等&#xff0c;引入jquery-3.2.…

0613课堂汇总

一&#xff1a; 数据类型&#xff1a; 基本数据类型{byte(8)/short(16)/char(16)/int(32)/float(32)/long(64)/double(64)/boolean(1)}引用数据类型{*除了基本数据类型都是引用数据类型 *包括API中的类&#xff08;String,File&#xff09;*自定义的类&#xff08;Personal A…

Istio流量管理实践之(5): 使用cert-manager部署Istio自定义入口网关及进行证书管理...

Istio Gateway提供多个自定义入口网关的支持能力&#xff0c;通过开放一系列端口用于承载网格边缘的进入连接&#xff0c;同时可以使用不同loadbalancer来隔离不同的入口流量。cert-manager可用于使用存储在Kubernetes Secret资源中的任意签名密钥对来获取证书。本文提供了手动…

log4配置

log4j 和 log4j2 方式一&#xff1a;log4j2.xml 添加 jar 包 1 <!-- log4j-core --> 2 <!-- 3 <dependency> 4 <groupId>org.apache.logging.log4j</groupId> 5 <artifactId>log4j-core</artifactId> 6 …

[bzoj3625][Codeforces 250 E]The Child and Binary Tree(生成函数+多项式运算+FFT)

3625: [Codeforces Round #250]小朋友和二叉树 Time Limit: 40 Sec Memory Limit: 256 MBSubmit: 650 Solved: 283[Submit][Status][Discuss]Description 我们的小朋友很喜欢计算机科学&#xff0c;而且尤其喜欢二叉树。考虑一个含有n个互异正整数的序列c[1],c[2],...,c[n]。…

常用内建模块

一.datetime 1.模块导入: from datetime import datetime 2.获取当前日期和时间: >>> now datetime.now() >>> print(now) 2019-01-13 14:19:38.1810003.获取指定日期和时间: >>> dt datetime(2019,1,10,15,0) >>> print(dt) 2019-01-10…

子序列进阶问题

题目&#xff1a; 有一个数组&#xff0c;让找到两个不重复的连续子序列A,B &#xff0c;求Max(Sum(A)-Sum(B) 分析&#xff1a; AB必定连续&#xff0c;设两端连接处index为{X&#xff0c;x1}&#xff0c;X可取0~n-1 设F(x)为连接处index为{X&#xff0c;x1}时 Max(Sum(A)…