BZOJ 1038 ZJOI2008 瞭望塔 半平面交
题目大意及模拟退火题解:见 http://blog.csdn.net/popoqqq/article/details/39340759
这次用半平面交写了一遍……求出半平面交之后。枚举原图和半平面交的每一个点,求出答案就可以
- #include<cmath>
- #include<cstdio>
- #include<cstring>
- #include<iostream>
- #include<algorithm>
- #define M 310
- #define eps 1e-7
- using namespace std;
- struct point{
- double x,y;
- }points[M];
- struct line{
- point *p1,*p2;
- double k,b;
- void Get_Parameters()
- {
- k=(double)(p1->y-p2->y)/(p1->x-p2->x);
- b=p1->y-k*p1->x;
- }
- bool operator < (const line &x) const
- {
- if( fabs(k-x.k)<eps )
- return b < x.b;
- return k < x.k;
- }
- }lines[M];
- int n;
- double ans=1e11;
- line *stack[M];int top;
- inline point Get_Intersection(const line &l1,const line &l2)
- {
- point re;
- re.x=-(l1.b-l2.b)/(l1.k-l2.k);
- re.y=l1.k*re.x+l1.b;
- return re;
- }
- void Insert(line &l)
- {
- while(top>=2)
- {
- if( Get_Intersection(*stack[top],l).x < Get_Intersection(*stack[top-1],*stack[top]).x )
- --top;
- else
- break;
- }
- stack[++top]=&l;
- }
- double F(double x)
- {
- int i;
- double re=0;
- for(i=1;i<=top;i++)
- re=max(re,stack[i]->k*x+stack[i]->b);
- return re;
- }
- double G(double x)
- {
- int i;
- for(i=n;i;i--)
- if(x>=points[i].x)
- break;
- return points[i].y+(x-points[i].x)/(points[i+1].x-points[i].x)*(points[i+1].y-points[i].y);
- }
- int main()
- {
- int i;
- cin>>n;
- for(i=1;i<=n;i++)
- scanf("%lf",&points[i].x);
- for(i=1;i<=n;i++)
- scanf("%lf",&points[i].y);
- for(i=1;i<n;i++)
- lines[i].p1=points+i,lines[i].p2=points+i+1,lines[i].Get_Parameters();
- sort(lines+1,lines+n);
- for(i=1;i<n;i++)
- if(i==n-1||fabs(lines[i].k-lines[i+1].k)>eps)
- Insert(lines[i]);
- for(i=1;i<=n;i++)
- ans=min(ans,F(points[i].x)-points[i].y);
- for(i=1;i<top;i++)
- {
- point p=Get_Intersection(*stack[i],*stack[i+1]);
- ans=min(ans,p.y-G(p.x));
- }
- printf("%.3lf\n",ans);
- }
BZOJ 1038 ZJOI2008 瞭望塔 半平面交的更多相关文章
- [BZOJ1038][ZJOI2008]瞭望塔(半平面交)
1038: [ZJOI2008]瞭望塔 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2999 Solved: 1227[Submit][Statu ...
- bzoj 1038 [ZJOI2008]瞭望塔(半平面交)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1038 [题意] 找一个最低塔高使可以看到村庄的每一个角落. [思路] 半平面交 能够看 ...
- 【BZOJ 1038】 1038: [ZJOI2008]瞭望塔
1038: [ZJOI2008]瞭望塔 Description 致力于建设全国示范和谐小村庄的H村村长dadzhi,决定在村中建立一个瞭望塔,以此加强村中的治安.我们将H村抽象为一维的轮廓.如下图所示 ...
- bzoj 1038 瞭望塔 半平面交+分段函数
题目大意 给你一座山,山的形状在二维平面上为折线 给出\((x_1,y_1),(x_2,y_2)...(x_n,y_n)\)表示山的边界点或转折点 现在要在\([x_1,x_n]\)(闭区间)中选择一 ...
- 「BZOJ1038」「洛谷P2600」「ZJOI2008」瞭望塔 半平面交+贪心
题目链接 BZOJ/洛谷 题目描述 致力于建设全国示范和谐小村庄的H村村长dadzhi,决定在村中建立一个瞭望塔,以此加强村中的治安. 我们将H村抽象为一维的轮廓.如下图所示: 我们可以用一条山的上方 ...
- 【BZOJ】1038: [ZJOI2008]瞭望塔
http://www.lydsy.com/JudgeOnline/problem.php?id=1038 题意:给出n个x轴各不相同的二维整点,且升序,n<=300,坐标绝对值<=10^6 ...
- 1038: [ZJOI2008]瞭望塔 - BZOJ
Description 致力于建设全国示范和谐小村庄的H村村长dadzhi,决定在村中建立一个瞭望塔,以此加强村中的治安.我们将H村抽象为一维的轮廓.如下图所示 我们可以用一条山的上方轮廓折线(x1, ...
- 1038: [ZJOI2008]瞭望塔
半平面交. 半平面指的就是一条直线的左面(也不知道对不对) 半平面交就是指很多半平面的公共部分. 这道题的解一定在各条直线的半平面交中. 而且瞭望塔只可能在各个点或者半平面交折线的拐点处. 求出半平面 ...
- bzoj千题计划126:bzoj1038: [ZJOI2008]瞭望塔
http://www.lydsy.com/JudgeOnline/problem.php?id=1038 本题可以使用三分法 将点按横坐标排好序后 对于任意相邻两个点连成的线段,瞭望塔的高度 是单峰函 ...
随机推荐
- 百度地图js版定位控件
一 概述 百度地图在最新版已加入浏览器定位控件,个人认为应该是既高德地图更新了一个浏览器也能定位功能后,百度不甘落后自己简简单单,草草写了个这个功能的定位控件 GeolocationControl 这 ...
- IIS部署asp.net报404错误
1).所建网站->(右键)权限->"ASP.NET计算机帐户"是否已添加. 2).所建网站->(右键)属性->ASP.NET选项卡->版本是否 ...
- 【Android UI设计与开发】第17期:滑动菜单栏(二)开源项目SlidingMenu的示例
通过上一篇文章的讲解,相信大家对于开源项目SlidingMenu都有了一个比较初步的了解(不了解的可以参考上 一篇文章),那么从这一章开始,博主将会以SlidingMenu为重心,给大家带来非常丰富的 ...
- xcode5下一个ffmpeg静态库配置
1.若要安装xcode命令行工具 1).xcode5安装命令行工具方法: 在终端运行命令Using xcode-select --install 2).xcode5之前安装命令行工具方法: 2.xco ...
- 《sql---教学反馈系统-阶段项目1》
--修改列 --把 "Address" 栏位改名为 "Addr".这可以用以下的指令达成: --ALTER table customer change Addr ...
- Tiny并行计算框架之复杂演示样例
问题来源 很感谢@doctorwho的问题: 假如职业介绍所来了一批生产汽车的工作,如果生产一辆汽车任务是这种:搭好底盘.拧4个轮胎.安装发动机.安装4个座椅.再装4个车门.最后安装顶棚. 之间有的 ...
- POJ1505&&UVa714 Copying Books(DP)
Copying Books Time Limit: 3000MS Memory Limit: 10000K Total Submissions: 7109 Accepted: 2221 Descrip ...
- 百度地图API相关点
百度API接口:http://developer.baidu.com/map/jsdemo.htm#a1_1 百度地图API具体解释之地图标注:http://www.cnblogs.com/jz110 ...
- hdu1690 Bus System (dijkstra)
Problem Description Because of the huge population of China, public transportation is very important ...
- www.centos.org
https://www.centos.org/forums/viewtopic.php?t=5770 In order to conserve the limited bandwidth availa ...