题解:

暴力枚举顺序

然后计算几何

代码:

#include<bits/stdc++.h>
int n,id[],lp=;
double v1,v2,ans=1e10;
struct pos
{
double x,y;
void init(){scanf("%lf%lf",&x,&y);}
pos operator+(pos a){return (pos){x+a.x,y+a.y};}
pos operator-(pos a){return (pos){x-a.x,y-a.y};}
pos operator*(double a){return (pos){x*a,y*a};}
double operator*(pos a){return x*a.y-y*a.x;}
double dot(pos a){return x*a.x+y*a.y;}
double abs(){return sqrt(x*x+y*y);}
}ps[];
double mn,mx;
struct line
{
pos a,b;
void chk(line w)
{
double c=w.b*b;
if(c==)return;
c=(a*w.b+w.b*w.a)/c;
if(c>0.5)c<mx&&(mx=c);
else c>mn&&(mn=c);
}
}ls[],l0[];
int main()
{
scanf("%lf%lf%d",&v1,&v2,&n);
for (int i=;i<=n;i++)ps[i].init(),id[i]=i;
ps[n+]=ps[];
pos p1=(pos){,},p2=(pos){v1,},p3=(pos){v1,v2},p4=(pos){,v2};
ls[lp++]=(line){p1,p2-p1};
ls[lp++]=(line){p2,p3-p2};
ls[lp++]=(line){p3,p4-p3};
ls[lp++]=(line){p4,p1-p4};
for (int i=;i<=n;++i)l0[i]=(line){ps[i],ps[i+]-ps[i]};
do
{
lp=;
double s=;
for (int i=;i<=n;i++)
{
int w=id[i];
mn=-1e10,mx=1e10;
for (int j=;j<lp;j++)l0[w].chk(ls[j]);
ls[lp++]=l0[w];
s+=(mx-mn)*l0[w].b.abs();
}
if (s<ans)ans=s;
}while(std::next_permutation(id+,id+n+));
printf("%.3f",ans);
return ;
}

bzoj1091的更多相关文章

  1. 【题解】切割多边形 [SCOI2003] [P4529] [Bzoj1091]

    [题解]切割多边形 [SCOI2003] [P4529] [Bzoj1091] 传送门:切割多边形 \(\text{[SCOI2003] [P4529]}\) \(\text{[Bzoj1091]}\ ...

  2. bzoj1091: [SCOI2003]切割多边形

    Description 有一个凸p边形(p<=8),我们希望通过切割得到它.一开始的时候,你有一个n*m的矩形,即它的四角的坐标分别为(0,0), (0,m), (n,0), (n,m).每次你 ...

  3. BZOJ第1页养成计划

    嗯,用这篇博客当一个目录,方便自己和学弟(妹?)们查阅.不定期更新. BZOJ1000   BZOJ1001   BZOJ1002   BZOJ1003   BZOJ1004   BZOJ1005   ...

  4. BZOJ 1091([SCOI2003]分割多边形-分割直线)

    1091: [SCOI2003]分割多边形 Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 223  Solved: 82 [Submit][id=10 ...

随机推荐

  1. Python3基础 list 元组转成列表

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  2. 【LTE基础知识】SGLTE, SVLTE, CSFB, VoLTE【转】

    本文转载自:https://blog.csdn.net/henryghx/article/details/18416405 4G网络下实现语音通话功能的技术共有三种——VoLTE.SGLTE(GSM ...

  3. Eclipse中离线安装ADT插件详细教程

    在搭建Android开发环境的时候,我们需要为Eclipse安装ADT(Android Development Tools)插件,这个插件可以为用户提供一个强大的Android集成开发环境.通过给Ec ...

  4. rabbitmq direct、fanout、topic 三种Exchange java 代码比较

    Producer端 1.channel的创建 无论是才用什么样的Exchange,创建channel代码都是相同的,如下 ConnectionFactory factory = new Connect ...

  5. 论文笔记——Deep Model Compression Distilling Knowledge from Noisy Teachers

    论文地址:https://arxiv.org/abs/1610.09650 主要思想 这篇文章就是用teacher-student模型,用一个teacher模型来训练一个student模型,同时对te ...

  6. CSS3 常用选择器

    p:last-of-type{background-color: red;} 选择p中最后一项 p:nth-of-type(2n){background-color: red;} 隔行变色里面也可以填 ...

  7. 瞎折腾之Webhooks

    之前听学长介绍过webhooks,也知道有这个东西,但没有真正的用于项目部署,长久以来一直过着“刀耕火种”的生活......长久以来,都是这么更新代码的: 由于之前做的项目刚刚上线,需要对其进行持续的 ...

  8. CVS导出&&自定义Attribute的使用

    1.cvs导出:List转为byte[] /// <summary> /// CvsExport帮助类 /// </summary> public static class C ...

  9. HDU 5877 Weak Pair(树状数组+dfs+离散化)

    http://acm.hdu.edu.cn/showproblem.php?pid=5877 题意: 给出一棵树,每个顶点都有权值,现在要你找出满足要求的点对(u,v)数,u是v的祖先并且a[u]*a ...

  10. python获取文件扩展名的方法

    主要介绍了python获取文件扩展名的方法,涉及Python针对文件路径的相关操作技巧 import os.path def file_extension(path): ] print file_ex ...