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

题意:大概给$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;
}

最新文章

  1. HDU 2045 不容易系列之(3)―― LELE的RPG难题(递推)
  2. 处理session跨域几种的方案
  3. JavaScript笔记:对象及数组
  4. Centos下编译JDK
  5. DHL 快递跟踪查询
  6. 高斯混合模型与EM算法
  7. 第七课第四节,T语言流程语句(版本5.0)
  8. 我的STL之旅 MyStack
  9. 【Win10】解决 模拟器调试手机 错误-&gt; 引导阶段... 无法找到指定路径......\2052\msdbgui.dll
  10. dede如何新建一个ajax服务端输出文件
  11. Combobox 成员添加
  12. Shapely介绍及用户手册
  13. solr源码导入eclipse
  14. C#/winform 旅游管理信息系统
  15. CocoaPods的安装及设置
  16. TangoWalk小组课程与优惠(20131208更新) | TangoWalk 学跳阿根廷探戈舞
  17. css--用户体验笔记及兼容记录
  18. 如何按内容筛选dom
  19. 用于 C&amp;sharp; 图像识别的轮廓分析技术
  20. WebApiClient库支持AOT

热门文章

  1. ServerLess之云函数实践-天气API
  2. MathType中的条件概率的输入
  3. Javascript严格模式与一般模式的区别
  4. 浅谈 van Emde Boas 树——从 u 到 log log u 的蜕变
  5. 「考试」noip模拟9,11,13
  6. SpringBoot集成FastDFS依赖实现文件上传
  7. Java 生成有序 UUID
  8. moviepy音视频剪辑:moviepy中的剪辑基类Clip详解
  9. PyQt(Python+Qt)学习随笔:Qt Designer中部件的调色板palette属性和字体font属性设置
  10. Linux 挂载,卸载光盘