[日常摸鱼]HDU1348Wall-凸包
我学习进度慢得连我自己都怕…
题意:大概给$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-凸包的更多相关文章
- [日常摸鱼]bzoj1007[HNOI2008]水平可见直线-半平面交(对偶转凸包)
不会写半平面交-然后发现可以转成对偶凸包问题 具体见这里:http://trinkle.blog.uoj.ac/blog/235 相关的原理我好像还是不太懂-orz #include<cstdi ...
- [日常摸鱼]Luogu2521[HAOI2011]防线修建-set维护凸包
https://www.luogu.org/problemnew/show/2521 题意:维护一个上凸包:删点,查询周长 很容易想到把问题转换为离线:先读入全部操作,记录下最后剩下的点,倒着加点来维 ...
- [日常摸鱼]bzoj2823 [AHOI2012]信号塔
题意:$n$个点,求最小圆覆盖,$n \leq 5e5$ 这题数据是随机的hhh 我们可以先求出凸包然后对凸包上的点求最小圆覆盖-(不过直接求应该也行?) 反正随便写好像都能过- #include&l ...
- Hash 日常摸鱼笔记
本篇文章是Hash在信息学竞赛中的应用的学习笔记,分多次更新(已经有很多坑了) 一维递推 首先是Rabin-Karp,对于一个长度为\(m\)的串\(S\) \(f(S)=\sum_{i=1}^{m} ...
- [日常摸鱼]HDU1724 Ellipse-自适应Simpson法
模板题~ QAQ话说Simpson法的原理我还是不太懂-如果有懂的dalao麻烦告诉我~ 题意:每次给一个椭圆的标准方程,求夹在直线$x=l$和$x=r$之间的面积 Simpson法 (好像有时候也被 ...
- [日常摸鱼]bzoj1257余数之和
题意:输入$k,n$,求$\sum_{i=1}^n k \mod i$ $k \mod i=k-i*\lfloor \frac{k}{i} \rfloor $,$n$个$k$直接求和,后面那个东西像比 ...
- [日常摸鱼]bzoj1001狼抓兔子-最大流最小割
题意就是求最小割- 然后我们有这么一个定理(最大流-最小割定理 ): 任何一个网络图的最小割中边的容量之和等于图的最大流. (下面直接简称为最大流和最小割) 证明: 如果最大流>最小割,那把这些 ...
- [日常摸鱼]pojKaka's Matrix Travels-拆点+最大费最大流
方格取数的升级版,每个格子最多取一次. $k=1$的话就是个普及组的dp题,$k=2$就是在之前的基础上多加两维. 然而现在$k$太大了当然就不dp啦 对于$k=1$的情况我们还可以把$(i,j)$向 ...
- [日常摸鱼]loj6000「网络流 24 题」搭配飞行员
题面 应该是二分图匹配,不过我写的是网络最大流. dinic求二分图最大匹配:加个源点和汇点,源点连向二分图的一边所有点,二分图的另一边所有点连向汇点,很明显这样得到的最大流就是这个二分图的最大匹配. ...
随机推荐
- 理解Volatile关键字,其实看这一篇就够了,写的非常细致
前言 volatile是Java虚拟机提供的轻量级的同步机制. volatile关键字作用是什么? 两个作用: 1.保证被volatile修饰的共享变量对所有线程总数可见的,也就是当一个线程修改了一个 ...
- Talk About My Route To Edit
Initially, I plan to write 4 columns:Python, Qt, Linux,and respectively, Career. However, my ambitio ...
- 详细了解IDM的队列功能
队列的种类 IDM(Internet Download Manager)下载器的队列分为2种:主要下载队列和同步队列.此外,我们也可以自己创建附加队列. 在左边的[分类]窗口中,黄色的图标为主要下载队 ...
- 【xmind converse excel】测试用例定制化小工具
背景 公司使用jira, jira写测试用例,jira可以通过execl导入进jira, 生成测试用例,但是模板很不统一,如果只是再execl中修改,又觉得及其的麻烦,所以写了一个xmind 转化为定 ...
- Eclipse的环境配置
1.想要配置Eclipse的环境,就要先下载Eclipse,并安装它,不会下载安装的小伙伴可以点击下面给的链接,里面有我写的详细的教程,这里就不重复了 Eclipse下载与安装:https://blo ...
- J2EE基本概念
XO POJO:Plain Ordinary Java Object,简单java对象 PO:Persistant Object,持久层对象(对应数据库中一条记录) BO:Business Objec ...
- 精尽MyBatis源码分析 - 文章导读
该系列文档是本人在学习 Mybatis 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释(Mybatis源码分析 GitHub 地址.Mybatis-Spring 源码分析 GitHub ...
- 【MySQL/C#/.NET】VS2010报错--“.Net Framework Data Provider。可能没有安装。”
前言 公司行业是金融软件,之前用的都是Oracle数据库.Oracle数据库用一个词来形容:大而全.MySQL的话,可能是因为开源.便宜,现在越来越主流. 我们也支持MySQL数据库,不过平时不用.最 ...
- 断点调试 breakpoints(修改request)
目录 1.抓取信息 2.点击breakpoints勾选断点 3.复制抓取的信息 4.点击proxy再点断点设置 5.点击勾选然后add添加其下如图 6.点击确定 7.刷新百度,charles出现的页面 ...
- ubuntu配置网络和静态路由(界面配置形式)
目录 网卡配置 静态ip配置 静态路由 外网ip配置(动态获取DHCP) 内网ip和静态路由配置 本文主要针对ubuntu18.0系统进行界面形式配置网络.并配置静态路由. 网卡配置 静态ip配置 打 ...