题目大意及模拟退火题解:见 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 瞭望塔 半平面交的更多相关文章

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

    1038: [ZJOI2008]瞭望塔 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2999  Solved: 1227[Submit][Statu ...

  2. bzoj 1038 [ZJOI2008]瞭望塔(半平面交)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1038 [题意] 找一个最低塔高使可以看到村庄的每一个角落. [思路] 半平面交 能够看 ...

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

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

  4. bzoj 1038 瞭望塔 半平面交+分段函数

    题目大意 给你一座山,山的形状在二维平面上为折线 给出\((x_1,y_1),(x_2,y_2)...(x_n,y_n)\)表示山的边界点或转折点 现在要在\([x_1,x_n]\)(闭区间)中选择一 ...

  5. 「BZOJ1038」「洛谷P2600」「ZJOI2008」瞭望塔 半平面交+贪心

    题目链接 BZOJ/洛谷 题目描述 致力于建设全国示范和谐小村庄的H村村长dadzhi,决定在村中建立一个瞭望塔,以此加强村中的治安. 我们将H村抽象为一维的轮廓.如下图所示: 我们可以用一条山的上方 ...

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

    http://www.lydsy.com/JudgeOnline/problem.php?id=1038 题意:给出n个x轴各不相同的二维整点,且升序,n<=300,坐标绝对值<=10^6 ...

  7. 1038: [ZJOI2008]瞭望塔 - BZOJ

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

  8. 1038: [ZJOI2008]瞭望塔

    半平面交. 半平面指的就是一条直线的左面(也不知道对不对) 半平面交就是指很多半平面的公共部分. 这道题的解一定在各条直线的半平面交中. 而且瞭望塔只可能在各个点或者半平面交折线的拐点处. 求出半平面 ...

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

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

随机推荐

  1. clear_logs.py修改

    #!/usr/bin/env python#encoding=utf-8"""清空最后修改时间跑今天7天以前的所有文件"""#指定监控的路径 ...

  2. Jetty:配置JSP支持

    选择JSP实现 从Jetty-9.2開始,使用Apache Jasper作为默认JSP容器实现.在前面的版本号中使用的是Glassfish Jasper,在后面的版本号中也能够继续使用它. Jetty ...

  3. [精读]Spationtemporal Saliency Detection Using Textural Contrast and Its Applications

    Spationtemporal Saliency Detection Using Textural Contrast and Its Applications Last Edit 2013/12/3 ...

  4. 中科同向备份软件Heartsone-backup(足足16个软件,可差异化备份虚拟机)

    传统的备份方式我们应该尽量避免,除非他们支持和执行使用基于(API)的虚拟环境中的管理备份.中科同向备份软件Heartsone-backup V8.0(以下简称HBU)就是通过VADP提供的一系列管理 ...

  5. C++(MFC)中WebBrowser去除3D边框的方法(实现IDocHostUIHandler接口)

    先说实在的:最终解决办法是实现IDocHostUIHandler接口,在GetHostInfo方法里解决,但“实现接口”意味着QueryInterface.AddRef.Release三个方法必须实现 ...

  6. CAS (1) —— Mac下配置CAS到Tomcat(服务端)(转)

    tomcat版本: tomcat-8.0.29 jdk版本: jdk1.8.0_65 cas版本: cas4.1.2cas-client-3.4.1 参考来源: CAS实现单点登录(SSO)经典完整教 ...

  7. NIO框架之MINA源码解析(转)

    http://blog.csdn.net/column/details/nio-mina-source.html http://blog.csdn.net/chaofanwei/article/det ...

  8. 将Ojective-C代码移植转换为Swift代码

    相比于Objective-C,Swift语言更加简练.有时我们需要把原来写的一些Objective-C代码转换成Swift,下面总结了各种常见的情况. 1,构造函数的迁移 Objective-C为: ...

  9. [计算机基础]关于实体( Entity )和模型( Model )

    实体与模型的浅析 在日常开发过程中经常看到Entity,Model,DataModel,它们之间到底有什么异同?下面是我个人的一些理解. 一.Entity,Model,它们是什么? 维基百科描述: 实 ...

  10. Modular Fibonacci

    http://acm.hust.edu.cn/vjudge/contest/view.action?cid=30506#problem/U fib数列对2^m取模的循环节为3*(2^(m-1)) #i ...