poj 3525

多边形内最大半径圆。

哇没有枉费了我自闭了这么些天,大概五天前我看到这种题可能毫无思路抓耳挠腮举手投降什么的,现在已经能1A了哇。

还是先玩一会计算几何,刷个几

嗯这个半平面交+二分就阔以解决。虽然队友说他施展三分套三分*****

想象一下,如果一个多边形能放进去半径为r的圆,那么在每条边向里平移r之后,他的内核一定不为空。

所以我们可以二分r,然后求半平面交,平移操作其实很好处理。

1A了很开森,去快乐的玩耍惹。

  1 #include <iostream>
  2 #include <cstdio>
  3 #include <algorithm>
  4 #include <vector>
  5 #include <cmath>
  6 #include <deque>
  7 using namespace std;
  8 typedef double db;
  9 const db eps=1e-6;
 10 const db pi=acos(-1);
 11 int sign(db k){
 12     if (k>eps) return 1; else if (k<-eps) return -1; return 0;
 13 }
 14 int cmp(db k1,db k2){return sign(k1-k2);}
 15 struct point{
 16     db x,y;
 17     point operator + (const point &k1) const{return (point){k1.x+x,k1.y+y};}
 18     point operator - (const point &k1) const{return (point){x-k1.x,y-k1.y};}
 19     point operator * (db k1) const{return (point){x*k1,y*k1};}
 20     point operator / (db k1) const{return (point){x/k1,y/k1};}
 21     db abs(){return sqrt(x*x+y*y);}
 22     point unit(){db w=abs(); return point{x/w,y/w};}
 23     point turn90(){ return point{-y,x};}
 24     db getP()const { return sign(y)==1||(sign(y)==0&&sign(x)==-1);}
 25 };
 26 db cross(point k1,point k2){ return k1.x*k2.y-k1.y*k2.x;}
 27 db dot(point k1,point k2){ return k1.x*k2.x+k1.y*k2.y;}
 28 db rad(point k1,point k2){ return atan2(cross(k1,k2),dot(k1,k2));}
 29 int compareangle(point k1,point k2){
 30     return k1.getP()<k2.getP()||(k1.getP()==k2.getP()&&sign(cross(k1,k2))>0);
 31 }
 32 point getLL(point k1,point k2,point k3,point k4){
 33     db w1=cross(k1-k3,k4-k3),w2=cross(k4-k3,k2-k3);
 34     return (k1*w2+k2*w1)/(w1+w2);
 35 }
 36 struct line{
 37     point p[2];
 38     line(point k1,point k2){p[0]=k1;p[1]=k2;}
 39     point &operator[](int k){ return p[k];}
 40     int include(point k){ return sign(cross(p[1]-p[0],k-p[0])>0);}
 41     point dir(){ return p[1]-p[0];}
 42     line push(db eps){//向左手边平移eps
 43         //const db eps=1e-6;
 44         point delta=(p[1]-p[0]).turn90().unit()*eps;
 45         return {p[0]-delta,p[1]-delta};
 46     }
 47 };
 48 point getLL(line k1,line k2){
 49     return getLL(k1[0],k1[1],k2[0],k2[1]);
 50 }
 51 int parallel(line k1,line k2){ return sign(cross(k1.dir(),k2.dir()))==0;}
 52 int sameDir(line k1,line k2){
 53     return parallel(k1,k2)&&sign(dot(k1.dir(),k2.dir()))==1;
 54 }
 55 int operator <(line k1,line k2){
 56     if(sameDir(k1,k2))return k2.include(k1[0]);
 57     return compareangle(k1.dir(),k2.dir());
 58 }
 59 int checkpos(line k1,line k2,line k3){ return k3.include(getLL(k1,k2));}
 60 vector<line> getHL(vector<line> &L){
 61     sort(L.begin(),L.end());deque<line> q;
 62     for(int i=0;i<L.size();i++){
 63         if(i&&sameDir(L[i],L[i-1]))continue;
 64         while (q.size()>1&&!checkpos(q[q.size()-2],q[q.size()-1],L[i]))q.pop_back();
 65         while (q.size()>1&&!checkpos(q[1],q[0],L[i]))q.pop_front();
 66         q.push_back(L[i]);
 67     }
 68     while (q.size()>2&&!checkpos(q[q.size()-2],q[q.size()-1],q[0]))q.pop_back();
 69     while (q.size()>2&&!checkpos(q[1],q[0],q[q.size()-1]))q.pop_front();
 70     vector<line> ans;for(int i=0;i<q.size();i++)ans.push_back(q[i]);
 71     return ans;
 72 }
 73 point p[1551];
 74 int n;
 75 bool cw(){//时针
 76     db s=0;
 77     for(int i=1;i<n-1;i++){
 78         s+=cross(p[i]-p[0],p[i+1]-p[0]);
 79     }
 80     return s>0;
 81 }
 82 vector<line> L,tmp;
 83 bool check(db x){
 84     tmp.clear();
 85     for(int i=0;i<L.size();i++){
 86         tmp.push_back(L[i].push(-x));
 87     }
 88     tmp = getHL(tmp);
 89     if(tmp.size()>=3)
 90         return true;
 91     return false;
 92 }
 93 int main(){
 94     //freopen("3525.in","r",stdin);
 95     while (scanf("%d",&n)&&n){
 96         for(int i=0;i<n;i++){
 97             scanf("%lf%lf",&p[i].x,&p[i].y);
 98         }
 99         if(!cw())reverse(p,p+n);
100         for(int i=0;i<n;i++){
101             L.push_back(line(p[i],p[(i+1)%n]));
102         }
103         db l = 0,r=100000.0;
104         while (l+0.0000001<r){
105             db mid = (l+r)/2;
106             if(check(mid))
107                 l=mid;
108             else
109                 r=mid;
110         }
111         printf("%.7f\n",l);
112         L.clear();
113     }
114 }
View Code

 

转载于:https://www.cnblogs.com/MXang/p/10454111.html

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

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

相关文章

尤雨溪对 2022 Web前端生态趋势是这样看的

文章目录前言开发范式&底层框架方面趋势基于依赖追踪范式基于依赖追踪范式—共同点基于编译的响应式系统统一模型的优势和代价基于编译的运行是优化Vue Vapor Mode&#xff08;input&#xff09;工具链原生语言在前端工具链中的使用工具链的抽象层次基于 Vite 的上层框架上…

bzoj4919 [Lydsy1706月赛]大根堆

Description 给定一棵n个节点的有根树&#xff0c;编号依次为1到n&#xff0c;其中1号点为根节点。每个点有一个权值v_i。你需要将这棵树转化成一个大根堆。确切地说&#xff0c;你需要选择尽可能多的节点&#xff0c;满足大根堆的性质&#xff1a;对于任意两个点i,j&#xff0…

众多mock工具,这一次我选对了

文章目录写在前面Mock介绍Mock能解决什么问题?传统Mock解决方案Postman接口测试工具Mock js第三方库Eolink解决方案全局Mock高级Mock返回结果Mock智能内置Mock智能自定义Mock约束条件MockEolink的Mock解决方案的优势:写在最后写在前面 交战之前&#xff0c;战士必先利其兵器&…

高并发的理解和使用场景-----特意区别和多线程的关系

一&#xff0c;高并发的理解 1.概念&#xff1a;就是短时间内遇到大量操作请求&#xff0c;导致站点服务器/db服务器资源被占满甚至严重时直接导致宕 2.影响&#xff1a;没有做高并发预处理的系统会给用户很差的体验感&#xff1b; 3.系统好坏的衡量&#xff1a;衡量一个系统的…

async 和 await 原来这么简单

前言 前端同学们可能都知道 async 和 await 的使用&#xff0c;当被面试官问到 async 和 await 的是什么&#xff1f;或者说一说你对 async、await 的理解&#xff1f;如果我们还是仅仅去阐述我是如何使用的就显得格外的苍白无力。今天博主就来带大家进一步认识我们的 async 和…

我为何在 CSDN 乐在其中

文章目录写在前面成为博主究竟能得到什么&#xff1f;内在提升耀眼名片丰富眼界提升知名度博客》变现写在最后写在前面 各位伙伴大家好&#xff0c;我是几何心凉&#xff0c;一位不是很大的也不是很小的博主&#xff0c;今天想要跟大家去聊一些比较实在的内容&#xff1b;大家能…

10分钟设置免费远程桌面

文章目录前言远程桌面设置教程启动Amazon Lightsail实例配置远程桌面启动远程桌面使用远程桌面前言 “你见过洛杉矶凌晨4点的样子吗&#xff1f;” 没有也没关系&#xff0c;你可以轻松配置一台位于洛杉矶的免费远程桌面。 利用Amazon全球可用区&#xff0c;甚至可以在世界各…

BZOJ2690: 字符串游戏(平衡树动态维护Dfs序)

Description 给定N个仅有a~z组成的字符串ai,每个字符串都有一个权值vi,有M次操作&#xff0c;操作分三种&#xff1a;Cv x v:把第x个字符串的权值修改为vCs x a:把第x个字符串修改成aQ:求出当前的最大权字符串集合&#xff0c;使得这个集合中的字符串经过重新排列后满足除最后一…

【第一趴】初探uni-app(uni-app发行者、uni-app推出背景、为什么选择uni-app)

文章目录写在前面DCloud当下跨平台开发存在的问题为什么选择uni-app写在最后写在前面 聚沙成塔——每天进步一点点&#xff0c;大家好我是几何心凉&#xff0c;不难发现越来越多的前端招聘JD中都加入了uni-app 这一项&#xff0c;它也已经成为前端开发者不可或缺的一项技能了&…

Rocket - tilelink - Atomics

https://mp.weixin.qq.com/s/TSwKL_qm-b-0e8x7r--hhg 简单介绍Atomics中数学运算、逻辑运算的实现。​​1. ioAtomics是一个硬件模块&#xff0c;他继承自Modules&#xff1a;​​IO端口定义如下&#xff1a;​​其中&#xff1a;a. write: 是否写操作&#xff1b;b. a&#xf…

“勤学会”火爆来袭

文章目录勤学会是什么&#xff1f;勤学会存在的意义是什么强大的助学团勤学会如何帮助大家学习参与勤学会能得什么奖品专属C计划加入勤学会勤学会是什么&#xff1f; 他来了他来了&#xff0c;其实两个月前勤学会的概念产品就已经出现了&#xff0c;只不过因为了 1024 大型活动…

LeetCode -- 204. Count Primes

题目标签 HashTab&#xff08;哈希表&#xff09; 题意及思路 题意&#xff1a;略 思路&#xff1a;有关素数的题目我所知道有两种做法。一种是最基本的isPrime算法&#xff0c;关键点在循环判断时&#xff0c;上限为Math.sqrt(n) &#xff08;求n是否为素数&#xff09;。另外…

如何寻找无序数组中的第K大元素?

如何寻找无序数组中的第K大元素&#xff1f; 有这样一个算法题&#xff1a;有一个无序数组&#xff0c;要求找出数组中的第K大元素。比如给定的无序数组如下所示&#xff1a; 如果k6&#xff0c;也就是要寻找第6大的元素&#xff0c;很显然&#xff0c;数组中第一大元素是24&am…

测试MongoDB的自动分片

MongoDB的自动分片&#xff1a; test库分片配置&#xff1a; db.shards.find(){ "_id" : "shard0000", "host" : "127.0.0.1:29017", "state" : 1 }{ "_id" : "shard0001", "host" : "1…

线上CPU飚高(死循环,死锁……)?帮你迅速定位代码位置

top基本使用&#xff1a; top命令参考本篇文章 查看内存和CPU的top命令&#xff0c;别看输出一大堆&#xff0c;理解了其实很简单 top 命令运行图&#xff1a; 第一行&#xff1a;基本信息 第二行&#xff1a;任务信息 第三行&#xff1a;CPU使用情况 第四行&#xff1a;物理内…

zookeeper watch笔记

ZK其核心原理满足CP, 实现的是最终一致性, 它只保证顺序一致性. zookeeper 基于 zxid 以及阻塞队列的方式来实现请求的顺序一致性。如果一个client连接到一个最新的 follower 上&#xff0c;那么它 read 读取到了最新的数据&#xff0c;然后 client 由于网络原因重新连接到 zoo…

单机简单搭建一个kafka集群(没有进行内核参数和JVM的调优)

1.JDK安装 在我的部署单节点kafka的博客里有相关的方法。&#xff08;https://www.cnblogs.com/ToBeExpert/p/9789486.html &#xff09;zookeeper和kafka的压缩包下载地址也在单节点部署的这篇博客里。 1.zookeeper集群的搭建 将zookeeper.tar.gz解压为三个目录&#xff0c;例…

[翻译]三张卡片帮你记住TDD的基本原则

原文地址&#xff1a;http://blog.briandicroce.com/2008/03/14/three-index-cards-to-easily-remember-the-essence-of-test-driven-development/ 当我浏览ObjectMentor的博客的时候&#xff0c;其中一篇Tim Ottinger的“TDD on Three Index Cards”引起了我的注意。他回忆了他…

凉哥核心圈程序员必备十大图书推荐(一)

写在前面 凉哥核心圈程序员必备十大图书推荐&#xff08;一&#xff09;&#xff0c;各位伙伴应该一目了然了哈&#xff0c;没错凉哥准备出一系列图书推荐的文章&#xff0c;其实很多朋友在私下问凉哥除了大学的课程外自己要不要读一些技术类的书籍呢&#xff0c;答案当时要的…

了解大数据的特点、来源与数据呈现方式

本次作业来源于&#xff1a;https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2639 1.浏览2019春节各种大数据分析报告&#xff0c;例如&#xff1a; 这世间&#xff0c;再无第二个国家有能力承载如此庞大的人流量。http://www.sohu.com/a/290025769_313993春节人口迁…