这个题实际上求的是半个凸包的核,但只需要枚举直线两两交点和地上的点就可以很快跑过

根据线性规划原理答案应该在直线交点上,为什么还要看地上的点?

因为实际上可行域是有下限的,有可能下限与地线重合

码(注意eps和运算中的括号):

#include<iostream>
#include<cstdio>
using namespace std;
long double ans=99999999999999,X,Y,K1,K2,B1,B2,lin;
#define eps 0.000000001
int n,i,j,k;
bool ky;
double lliinn;
struct dian
{
long    double x,y;
}D[400];
int main()
{scanf("%d",&n);for(i=1;i<=n;i++)scanf("%lf",&lliinn),D[i].x=lliinn;for(i=1;i<=n;i++)scanf("%lf",&lliinn),D[i].y=lliinn;for(i=1;i<=n;i++){lin=0;for(k=1;k<n;k++){K1=(D[k].y-D[k+1].y)/(D[k].x-D[k+1].x);B1=D[k].y-K1*D[k].x;  lin=max(lin,K1*D[i].x+B1-D[i].y);       if(lin+eps>=ans)break; }       ans=min(ans,lin);  }   for(i=1;i<n;i++)for(j=i+1;j<n;j++)//都是和后一个点 {K1=(D[i].y-D[i+1].y)/(D[i].x-D[i+1].x);B1=D[i].y-K1*D[i].x;K2=(D[j].y-D[j+1].y)/(D[j].x-D[j+1].x);B2=D[j].y-K2*D[j].x;if(K1+eps>K2&&K1-eps<K2)continue;    X=(B2-B1)/(K1-K2); Y=K2*X+B2;lin=999999999999;for(k=1;k<n;k++){if(D[k].x<=X&&X<=D[k+1].x){K1=(D[k].y-D[k+1].y)/(D[k].x-D[k+1].x);B1=D[k].y-K1*D[k].x;lin=Y-(K1*X+B1);} }if(lin>=ans||lin<0)continue;ky=1;for(k=1;k<n;k++){K1=(D[k].y-D[k+1].y)/(D[k].x-D[k+1].x);B1=D[k].y-K1*D[k].x;        if(K1*X+B1>Y+eps){ky=0;break;}    }   if(ky){ans=min(ans,lin);           }       }lliinn=ans;printf("%.3lf",lliinn);
}

bzoj1038 [ZJOI2008]瞭望塔 枚举相关推荐

  1. bzoj1038 [ZJOI2008]瞭望塔(半平面交)

    bzoj1038 [ZJOI2008]瞭望塔 原题地址:http://www.lydsy.com/JudgeOnline/problem.php?id=1038 题意: 村中要建立一个瞭望塔,我们将H ...

  2. bzoj千题计划126:bzoj1038: [ZJOI2008]瞭望塔

    http://www.lydsy.com/JudgeOnline/problem.php?id=1038 本题可以使用三分法 将点按横坐标排好序后 对于任意相邻两个点连成的线段,瞭望塔的高度 是单峰函 ...

  3. bzoj1038: [ZJOI2008]瞭望塔

    Description 致力于建设全国示范和谐小村庄的H村村长dadzhi,决定在村中建立一个瞭望塔,以此加强村中的治安.我们 将H村抽象为一维的轮廓.如下图所示 我们可以用一条山的上方轮廓折线(x1 ...

  4. bzoj1038 [ZJOI2008]瞭望塔

    Description 致力于建设全国示范和谐小村庄的H村村长dadzhi,决定在村中建立一个瞭望塔,以此加强村中的治安.我们 将H村抽象为一维的轮廓.如下图所示 我们可以用一条山的上方轮廓折线(x1 ...

  5. [BZOJ1038][ZJOI2008]瞭望塔(半平面交)

    题目: 我是超链接 题解: 很显然,只有瞭望塔和每个山顶形成直线的斜率的绝对值大于对应山坡的斜率,这个山坡才能看见.不难想到对所有的山坡求一个半平面交然后找到有山顶存在的部分,这个n<=300也 ...

  6. [BZOJ1038]ZJOI2008瞭望塔|半平面交

    考虑某个村庄可以被看见的区域,发现一条线段的上方就是可以看见端点的区域,那就把所有线段扔进去做半平面交,不要忘记了要加上两条左右边界..求出来之后发现答案要么是某个村庄往上到半平面交的一段距离,要么是 ...

  7. luogu P2600 [ZJOI2008]瞭望塔

    luogu P2600 [ZJOI2008]瞭望塔 大意 题目讲得很清楚啊 题解 可以发现,那个点一定是某两条直线的交点 然后直接枚举两条直线就好了 // luogu-judger-enable-o2 ...

  8. 【BZOJ 1038】 1038: [ZJOI2008]瞭望塔

    1038: [ZJOI2008]瞭望塔 Description 致力于建设全国示范和谐小村庄的H村村长dadzhi,决定在村中建立一个瞭望塔,以此加强村中的治安.我们 将H村抽象为一维的轮廓.如下图所 ...

  9. bzoj 1038 [ZJOI2008]瞭望塔

    1038: [ZJOI2008]瞭望塔 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 2438  Solved: 1004 [Submit][Sta ...

最新文章

  1. 最大的ai计算机模型,Microsoft构建了世界排名前五的超级计算机,用于在Azure上训练大型AI模型...
  2. C# Windows基础拾遗01—线条绘制篇
  3. [unreal4入门系列之十] UE4添加角色到场景中
  4. 最直接的解决服务器宕机的方法
  5. python读取nc文件并转换成csv_python3使用类型转换读取csv文件
  6. order by居然不能直接在union子句中使用
  7. sqoop2操作流程
  8. windows商店_Windows记事本应用现在可以从Microsoft Store中获得
  9. 视觉SLAM中使用Matlab标定摄像头
  10. Redis:分布式锁setnx(只 实现了 互斥性和容错性)
  11. 让服务程序进入demon模式的代码
  12. iostate知识要点
  13. Android插件框架VirtualAPK学习和使用
  14. 红米 android8 刷机,【红米6 安卓8.1线刷包】MIUI V9.6.7.0.OCGCNFD稳定版 线刷精简包...
  15. 苹果账号总说连接服务器时出错,苹果手机连接iTunes时老是提示 “连接到AppleID服务器时出错”,怎么处理?...
  16. 超有趣的Python实战:将图片转成像素风!
  17. 用双向宽搜来提高搜索效率
  18. 计算机近几年自考本科题,近几年自考管理系统中计算机硬应用题汇总.doc
  19. 快手如何快速涨粉到10000
  20. 基于cocos2d-x实现的全民打飞机小游戏

热门文章

  1. 红橙Darren视频笔记 点赞效果 动画练习
  2. 韩顺平php视频笔记36 php基本语法
  3. webservice的css哪里添加,XML+XSLT+CSS+JQuery+WebService组建Asp.Net网站
  4. 【java基础知识】通过java实时查询数据库
  5. 启动zookeeper时IDEA启动项目时提示8080端口被占用
  6. Eclipse安装最新SVN插件方法
  7. 微信开发---微信网页授权、JS-SDK和微信公众号的基本设置
  8. python面向对象程序设计实训学生自我总结_Python面向对象程序设计示例小结
  9. matlab帮助_【MATLAB】使用 APP DESIGNER 模块来帮助你做参数设计
  10. replace为undefined_手写 XML 转化为 JS对象 方法