题目链接: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 信号增幅仪相关推荐

  1. JZOJ 3660. 【SHTSC2014】信号增幅仪

    Description 无线网络基站在理想状况下有效信号覆盖范围是个圆形.而无线基站的功耗与圆的半径的平方成正比.现给出平面上若干网络用户的位置,请你选择一个合适的位置建设无线基站 -- 就在你拿起键 ...

  2. BZOJ 3564: [SHOI2014]信号增幅仪(随机增量法)

    如果是个圆的话好办,如果是拉成椭圆呢?直接压回去!!! 然后随机增量法就行了 CODE: #include<cstdio> #include<iostream> #includ ...

  3. P4288 [SHOI2014]信号增幅仪 最小圆覆盖

    传送门 题意:给出一些点,让后让你用一个ba=1p\frac{b}{a}=\frac{1}{p}ab​=p1​的且绕x正方向逆时针转动了a°的椭圆覆盖,求最小的b. 由于题目中椭圆是绕x正方向逆时针旋 ...

  4. 中地恒达振弦信号采集仪MCU采集模块

    1.产品概述 多通道振弦信号采集仪是一种岩土监测仪器,适用于钢弦式传感器输出的频率信号计算及温度采集.可用于大坝.桥梁.边坡等工程的应力.应变.变形.渗压等物理量监测和安全稳定分析. 本仪器采用当前最 ...

  5. NI推出第二款矢量信号收发仪,扩展创新性软件设计仪器平台

    ·NI在新的矢量信号收发仪(VST)上增加了I/Q连接,VST结合了矢量信号发生仪和矢量信号分析仪,并带有用户可编程的FPGA,用于实时信号处理和控制. ·工程师可以使用NI LabVIEW系统设计软 ...

  6. linux字符查找命令,linux查找文件或字符串的命令

    1. linux下面用于查到的命令有哪些? 是不是有很多呀,这个我还没做过统计和调查,不过这篇博客只介绍grep与find的最基本应用. grep和find功能都是相当的强大,这里也只是介绍这两个命令 ...

  7. cocos2dx 圆盘抽奖_easing--缓动函数--贝塞尔函数--圆盘转动抽奖应用

    一.transition 和 animation css上面两个属性允许你指定缓动函数. 不幸的是,他们不支持所有的缓动函数,所以你必须指定贝赛尔曲线实现缓动函数. 选取缓动函数以显示贝赛尔曲线. d ...

  8. [SHOI2015]自动刷题机

    [SHOI2015]自动刷题机 题目描述 曾经发明了信号增幅仪的发明家 SHTSC 又公开了他的新发明:自动刷题机--一种可以自动 AC 题目的神秘装置. 自动刷题机刷题的方式非常简单:首先会瞬间得出 ...

  9. [bzoj4590][Shoi2015]自动刷题机

    来自FallDream 的博客,未经允许,请勿转载,谢谢. 曾经发明了信号增幅仪的发明家ditoly又公开了他的新发明:自动刷题机--一种可以自动AC题目的神秘装置.自动刷题机刷题的方式非常简单:首先 ...

最新文章

  1. oracle维护数据的完整性
  2. MyBatis传入参数与parameterType
  3. Java IO: System.in, System.out, System.err
  4. 测试书籍推荐(收集)
  5. Shell教程(四):条件语句、循环语句、break/continue
  6. Redlock:Redis分布式锁最牛逼的实现
  7. python matlabplot animate 刷新_matlab动态绘图Animation
  8. php大马免杀技巧 | bypass waf
  9. Linux设备树翻译计划
  10. python手机端给电脑端发送数据_期货交易软件有哪些比较好用?分手机端和电脑端...
  11. Java入门到月入2W+ IT各种技术教学资料分享
  12. 从拨号到 5G :互联网登录完全指南
  13. c语言初学者程序,C语言初学者必懂的100个范例程序
  14. ANT安装(亲测可用)
  15. Windows Server 2008 R2 官方原版下载大全
  16. Word页面视图下不显示内容但web视图下可以显示的问题
  17. 笔记本nc10装linux,三星nc10笔记本快捷键驱动
  18. 超详细的ArcGIS生成格网知识汇总
  19. 测试人员的基本技能要求 - 快速掌握业务知识的能力
  20. 如何制定客户留存策略_运营参考|促活、拉新、留存、变现,7种策略教你做好用户运营...

热门文章

  1. java random产生随机数_java的三种随机数生成方式,必掌握
  2. oracle 日期6,EF 6与Oracle - 如何加入日期字段?
  3. 服务器自动挂载硬盘,Linux硬盘分区及开机自动挂载
  4. Linux下设置环境变量
  5. Luogu P1471 方差
  6. 常见笔试面试问题点(转载)
  7. CSS 如何设置垂直居中
  8. iOS小知识点(非UI部分)
  9. ubuntu每次登陆都用root账号登陆
  10. python和django中的常见错误