我学习进度慢得连我自己都怕…

题意:大概给$n$个点搞出它的凸包,然后还要在凸包外弄一层厚为$l$的东西,求这个东西的周长

我个滞涨居然把pi开成了int…搞了一个晚上才看见

凸包直接求,因为是凸多边形所以答案就是凸包的周长加上$2 \pi l$

#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
const int N=1005;
const double pi=acos(-1);
struct Point
{
double x,y;
Point(double x=0,double y=0):x(x),y(y){}
}p[N];
int T,n,L;
int q[N];
inline Point operator - (Point a,Point b)
{
return Point(a.x-b.x,a.y-b.y);
}
inline double Cross(Point a,Point b)
{
return a.x*b.y-a.y*b.x;
}
inline double sqr2(double x){return x*x;}
inline double lenght(Point a,Point b)
{
return sqrt(sqr2(a.x-b.x)+sqr2(a.y-b.y));
}
inline bool cmp(const Point &a,const Point &b)
{
if(a.x==b.x)return a.y<b.y;
return a.x<b.x;
}
inline int convexHull()
{
sort(p+1,p+n+1,cmp);
int m=0;
for(register int i=1;i<=n;i++)
{
while(m>=2&&Cross(p[q[m]]-p[q[m-1]],p[i]-p[q[m-1]])<=0)m--;
q[++m]=i;
}
int k=m;
for(register int i=n-1;i>=1;i--)
{
while(m>k&&Cross(p[q[m]]-p[q[m-1]],p[i]-p[q[m-1]])<=0)m--;
q[++m]=i;
}
if(n>1)m--;
return m;
}
int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&L);
for(register int i=1;i<=n;i++)scanf("%lf%lf",&p[i].x,&p[i].y);
int m=convexHull();double ans=0;
for(register int i=2;i<=m;i++)ans+=lenght(p[q[i]],p[q[i-1]]);
ans+=lenght(p[q[m]],p[q[1]]);
ans+=2*pi*L;
printf("%.0lf\n",ans);
if(T)printf("\n");
}
return 0;
}

[日常摸鱼]HDU1348Wall-凸包的更多相关文章

  1. [日常摸鱼]bzoj1007[HNOI2008]水平可见直线-半平面交(对偶转凸包)

    不会写半平面交-然后发现可以转成对偶凸包问题 具体见这里:http://trinkle.blog.uoj.ac/blog/235 相关的原理我好像还是不太懂-orz #include<cstdi ...

  2. [日常摸鱼]Luogu2521[HAOI2011]防线修建-set维护凸包

    https://www.luogu.org/problemnew/show/2521 题意:维护一个上凸包:删点,查询周长 很容易想到把问题转换为离线:先读入全部操作,记录下最后剩下的点,倒着加点来维 ...

  3. [日常摸鱼]bzoj2823 [AHOI2012]信号塔

    题意:$n$个点,求最小圆覆盖,$n \leq 5e5$ 这题数据是随机的hhh 我们可以先求出凸包然后对凸包上的点求最小圆覆盖-(不过直接求应该也行?) 反正随便写好像都能过- #include&l ...

  4. Hash 日常摸鱼笔记

    本篇文章是Hash在信息学竞赛中的应用的学习笔记,分多次更新(已经有很多坑了) 一维递推 首先是Rabin-Karp,对于一个长度为\(m\)的串\(S\) \(f(S)=\sum_{i=1}^{m} ...

  5. [日常摸鱼]HDU1724 Ellipse-自适应Simpson法

    模板题~ QAQ话说Simpson法的原理我还是不太懂-如果有懂的dalao麻烦告诉我~ 题意:每次给一个椭圆的标准方程,求夹在直线$x=l$和$x=r$之间的面积 Simpson法 (好像有时候也被 ...

  6. [日常摸鱼]bzoj1257余数之和

    题意:输入$k,n$,求$\sum_{i=1}^n k \mod i$ $k \mod i=k-i*\lfloor \frac{k}{i} \rfloor $,$n$个$k$直接求和,后面那个东西像比 ...

  7. [日常摸鱼]bzoj1001狼抓兔子-最大流最小割

    题意就是求最小割- 然后我们有这么一个定理(最大流-最小割定理 ): 任何一个网络图的最小割中边的容量之和等于图的最大流. (下面直接简称为最大流和最小割) 证明: 如果最大流>最小割,那把这些 ...

  8. [日常摸鱼]pojKaka's Matrix Travels-拆点+最大费最大流

    方格取数的升级版,每个格子最多取一次. $k=1$的话就是个普及组的dp题,$k=2$就是在之前的基础上多加两维. 然而现在$k$太大了当然就不dp啦 对于$k=1$的情况我们还可以把$(i,j)$向 ...

  9. [日常摸鱼]loj6000「网络流 24 题」搭配飞行员

    题面 应该是二分图匹配,不过我写的是网络最大流. dinic求二分图最大匹配:加个源点和汇点,源点连向二分图的一边所有点,二分图的另一边所有点连向汇点,很明显这样得到的最大流就是这个二分图的最大匹配. ...

随机推荐

  1. 分布式监控系统之Zabbix 使用SNMP、JMX信道采集数据

    前文我们了解了zabbix的被动.主动以及web监控相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14024212.html:今天我们来了解下zabb ...

  2. 详解在Word文档中常见的各种公式编辑问题

    正常情况下,我们在安装完成MathType之后会直接加载在Word文档中,Word文档中的MathType比较复杂,新手操作遇到麻烦也是常有的事,今天就来给大家详解下Word文档中常见的MathTyp ...

  3. Improving Commonsense Question Answering by Graph-based Iterative Retrieval over Multiple Knowledge Sources —— 基于多知识库迭代检索的常识问答系统

    基于多知识库迭代检索的问答系统 论文地址 背景 常识问答任务需要引入外部知识来帮助模型更好地理解自然语言问题,现有的解决方案大都采用两阶段框架: 第一阶段 -- 从广泛的知识来源中找到与给定问题相关的 ...

  4. H5,Css小姐又作画了

    用H5和CSS3做出自己名字缩写. <html> <head> <meta charset="utf-8"> <title>name ...

  5. 通过python基于netconf协议获取网络中网元的配置数据,助力企业网络控制自动化轻松实现!

    摘要:在当今信息化时代,大多数企业都需要网络支撑企业的ICT运行,提升企业运行效率,针对企业网络中的网元设备(包括交换机,路由器,防火墙等),很多企业希望根据自身的业务特点定制网络管理,比如可以实现网 ...

  6. python安装第三方库aiohtpp,sanio失败,pip install multidict 失败问题

    1.python的第三库安装地址:http://www.lfd.uci.edu/~gohlke/pythonlibs 2. 3.pip安装.whl文件指定该文件的位置

  7. lambda表达式中无法抛出受检异常!

    抛出受检异常的时候,我们的接口应该带上throw关键字,但通过lambda表达式实现的Consumer的accept方法并不带有关键字,因此在lambda表达式中不能抛出受检异常必须把它吃掉

  8. Kafka作为分布式消息系统的系统解析

    Kafka概述 Apache Kafka由Scala和Java编写,基于生产者和消费者模型作为开源的分布式发布订阅消息系统.它提供了类似于JMS的特性,但设计上又有很大区别,它不是JMS规范的实现,如 ...

  9. python应用(5):变量类型与数据结构

    如前所说,写程序如同给算法写壳,而算法就是流程,所以流程是程序的主角(但这个流程不一定要你来设计).在程序中,为了配合流程(算法)的实现,除了顺序.分支与循环语句的使用,还要借助"变量&qu ...

  10. LeetCode 004 Median of Two Sorted Arrays

    题目描述:Median of Two Sorted Arrays There are two sorted arrays A and B of size m and n respectively. F ...