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);
}
BZOJ 3564 信号增幅仪相关推荐
- JZOJ 3660. 【SHTSC2014】信号增幅仪
Description 无线网络基站在理想状况下有效信号覆盖范围是个圆形.而无线基站的功耗与圆的半径的平方成正比.现给出平面上若干网络用户的位置,请你选择一个合适的位置建设无线基站 -- 就在你拿起键 ...
- BZOJ 3564: [SHOI2014]信号增幅仪(随机增量法)
如果是个圆的话好办,如果是拉成椭圆呢?直接压回去!!! 然后随机增量法就行了 CODE: #include<cstdio> #include<iostream> #includ ...
- P4288 [SHOI2014]信号增幅仪 最小圆覆盖
传送门 题意:给出一些点,让后让你用一个ba=1p\frac{b}{a}=\frac{1}{p}ab=p1的且绕x正方向逆时针转动了a°的椭圆覆盖,求最小的b. 由于题目中椭圆是绕x正方向逆时针旋 ...
- 中地恒达振弦信号采集仪MCU采集模块
1.产品概述 多通道振弦信号采集仪是一种岩土监测仪器,适用于钢弦式传感器输出的频率信号计算及温度采集.可用于大坝.桥梁.边坡等工程的应力.应变.变形.渗压等物理量监测和安全稳定分析. 本仪器采用当前最 ...
- NI推出第二款矢量信号收发仪,扩展创新性软件设计仪器平台
·NI在新的矢量信号收发仪(VST)上增加了I/Q连接,VST结合了矢量信号发生仪和矢量信号分析仪,并带有用户可编程的FPGA,用于实时信号处理和控制. ·工程师可以使用NI LabVIEW系统设计软 ...
- linux字符查找命令,linux查找文件或字符串的命令
1. linux下面用于查到的命令有哪些? 是不是有很多呀,这个我还没做过统计和调查,不过这篇博客只介绍grep与find的最基本应用. grep和find功能都是相当的强大,这里也只是介绍这两个命令 ...
- cocos2dx 圆盘抽奖_easing--缓动函数--贝塞尔函数--圆盘转动抽奖应用
一.transition 和 animation css上面两个属性允许你指定缓动函数. 不幸的是,他们不支持所有的缓动函数,所以你必须指定贝赛尔曲线实现缓动函数. 选取缓动函数以显示贝赛尔曲线. d ...
- [SHOI2015]自动刷题机
[SHOI2015]自动刷题机 题目描述 曾经发明了信号增幅仪的发明家 SHTSC 又公开了他的新发明:自动刷题机--一种可以自动 AC 题目的神秘装置. 自动刷题机刷题的方式非常简单:首先会瞬间得出 ...
- [bzoj4590][Shoi2015]自动刷题机
来自FallDream 的博客,未经允许,请勿转载,谢谢. 曾经发明了信号增幅仪的发明家ditoly又公开了他的新发明:自动刷题机--一种可以自动AC题目的神秘装置.自动刷题机刷题的方式非常简单:首先 ...
最新文章
- oracle维护数据的完整性
- MyBatis传入参数与parameterType
- Java IO: System.in, System.out, System.err
- 测试书籍推荐(收集)
- Shell教程(四):条件语句、循环语句、break/continue
- Redlock:Redis分布式锁最牛逼的实现
- python matlabplot animate 刷新_matlab动态绘图Animation
- php大马免杀技巧 | bypass waf
- Linux设备树翻译计划
- python手机端给电脑端发送数据_期货交易软件有哪些比较好用?分手机端和电脑端...
- Java入门到月入2W+ IT各种技术教学资料分享
- 从拨号到 5G :互联网登录完全指南
- c语言初学者程序,C语言初学者必懂的100个范例程序
- ANT安装(亲测可用)
- Windows Server 2008 R2 官方原版下载大全
- Word页面视图下不显示内容但web视图下可以显示的问题
- 笔记本nc10装linux,三星nc10笔记本快捷键驱动
- 超详细的ArcGIS生成格网知识汇总
- 测试人员的基本技能要求 - 快速掌握业务知识的能力
- 如何制定客户留存策略_运营参考|促活、拉新、留存、变现,7种策略教你做好用户运营...