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

powerdesigner导出sql将name放到comment注释上 【代码】powerdesigner导出sql将name放到comment注释上。 阅读详情

考虑某个村庄可以被看见的区域,发现一条线段的上方就是可以看见端点的区域,那就把所有线段扔进去做半平面交,不要忘记了要加上两条左右边界。。求出来之后发现答案要么是某个村庄往上到半平面交的一段距离,要么是半平面交的某个点向下到轮廓线的一段距离,两个都是线性函数嘛。。根据这两种情况枚举更新答案即可。。

#include<cstdio>
#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<memory.h>
#define h1 que[head]
#define h2 que[head+1]
#define t1 que[tail]
#define t2 que[tail-1]
#define N 310
#define eps 1e-8
using namespace std;
struct point{
	double x,y;
	point(){}
	point(double x,double y):x(x),y(y){}
}p[N];
struct line{
	point p,v;
	double angle;
}a[N],que[N];
int i,head,tail,cnt,n;
double x[N],y[N],ans;
point operator-(point a,point b){return point(a.x-b.x,a.y-b.y);}
point operator+(point a,point b){return point(a.x+b.x,a.y+b.y);}
double operator*(point a,point b){return a.x*b.y-a.y*b.x;}
bool cmp(line a,line b)//被包含的放在前面 
{
	if (a.angle!=b.angle) return a.angle<b.angle;else return b.v*(a.p-b.p)>0;
}
point cross(line a,line b)
{
	point x1=a.p+a.v;
	double k1=(b.p-a.p)*b.v,k2=b.v*(b.p-x1),k=k1/(k1+k2);
	return point(k*a.v.x+a.p.x,k*a.v.y+a.p.y);
}
bool judge(line x1,line x2,line i)
{
	point t=cross(x1,x2);
//	printf("%.3lf %.3lf\n",t.x,t.y);
	return i.v*(t-i.p)>0;
}
void push(line x)
{
	while (head<tail&&!judge(t1,t2,x)) tail--;
	while (head<tail&&!judge(h1,h2,x)) head++;
	que[++tail]=x;
}
void hpi()
{
	sort(a+1,a+1+n,cmp);
	int i;cnt=0;
	a[0].angle=-10.12345;
	for (i=1;i<=n;i++)
		if (a[i].angle!=a[i-1].angle) a[++cnt]=a[i];
	head=1;tail=1;que[1]=a[1];
	for (i=2;i<=cnt;i++) push(a[i]);
	while (head<tail&&!judge(t1,t2,h1)) tail--;
	while (head<tail&&!judge(h1,h2,t1)) head++;
	cnt=0;
	for (i=head;i<tail;i++) p[++cnt]=cross(que[i],que[i+1]);
}
void getans()
{
	int i,j;
	ans=1e30;
	for (i=1;i<=cnt;i++)
		for (j=1;j<n-1;j++)
			if (x[j]<=p[i].x&&x[j+1]>=p[i].x)
			{
				line t,s;
				t.p=point(x[j],y[j]);t.v=point(x[j+1]-x[j],y[j+1]-y[j]);
				s.p=p[i];s.v=point(0,1);
				point c=cross(t,s);
				ans=min(ans,p[i].y-c.y);
			}
	for (i=1;i<n;i++)
		for (j=1;j<cnt;j++)
			if (p[j].x<=x[i]&&p[j+1].x>=x[i])
			{
				line t,s;
				t.p=p[j];t.v=p[j+1]-p[j];
				s.p=point(x[i],y[i]);s.v=point(0,1);
				point c=cross(t,s);
				ans=min(ans,c.y-y[i]);
			}
}
int main()
{
	freopen("1038.in","r",stdin);
//	freopen("my.out","w",stdout);
	scanf("%d",&n);
	for (i=1;i<=n;i++) scanf("%lf",&x[i]);
	for (i=1;i<=n;i++) scanf("%lf",&y[i]);
	x[0]=x[1];y[0]=y[1]+1;
	n++;x[n]=x[n-1];y[n]=y[n-1]+1;
	for (i=1;i<=n;i++) a[i].p=point(x[i-1],y[i-1]),a[i].v=point(x[i]-x[i-1],y[i]-y[i-1]);
	for (i=1;i<=n;i++) a[i].angle=atan2(a[i].v.y,a[i].v.x);
	hpi();
	getans();
	printf("%.3lf",ans);
}


基于YOLOv8的铁路轨道异物检测系统设计与实现 目标检测是计算机视觉领域的核心任务之一,旨在识别图像中特定目标的位置和类别。传统方法主要依赖手工特征(如HOG、SIFT等)和分类器(如SVM),而深度学习方法通过卷积神经网络自动学习特征表示,显著提升了检测性能。YOLO(You Only Look Once)系列算法作为单阶段目标检测的代表,以其高效的检测速度著称。YOLOv8是Ultralytics公司于2023年发布的最新版本,在精度和速度上都有进一步提升。 阅读详情

相关推荐

Pytorch的一小步,昇腾芯片的一大步

相信在AI圈的人多多少少都看到了最近的信息:PyTorch最新2.1版本宣布支持华为昇腾芯片!

机器学习-深度学习-图像处理-opencv-段子 5240

BZOJ 1038 ZJOI 2008 瞭望塔 半平面交

题目大意:给出一个村庄的轮廓,在这个村庄里可以在任意的地方建一个瞭望塔,这个塔需要足够高,使得能够看得村庄的全貌。求这个瞭望塔的最小高度。 思路:对于村庄中的每一条边,瞭望塔为了看见它,必须要在这个直线左侧的半平面区域。这样的话为了满足所有的边的需求,做一次半平面交,瞭望塔的最高点必须在所有边的半平面交的区域内。 如下图样例。 所有边的半平面交区域就是上面的图形。设上面半平面的函

(╯°口°)╯(┴—┴ 1036

自动驾驶轨迹规划算法——Apollo EM Planner

Apollo EM Planner 是百度自动驾驶系统中的轨迹规划算法,采用期望-最大化(EM)迭代优化思想。其核心是将轨迹规划分解为路径优化(E-Step)和速度优化(M-Step)两个子问题,在Frenet坐标系下交替求解。算法先通过动态规划(DP)搜索粗路径,再使用二次规划(QP)进行平滑优化,并结合障碍物信息生成安全走廊。相较Lattice、Hybrid A*等规划器,EM Planner具有更好的实时性、动态障碍物处理能力和轨迹平滑性,适用于城市道路、高速公路等复杂场景。该算法通过解耦路径与速度优

swaggytiger的博客 2666

bzoj 1038[ZJOI2008]瞭望塔 - 半平面交

1038: [ZJOI2008]瞭望塔 Time Limit:10 SecMemory Limit:162 MB Description   致力于建设全国示范和谐小村庄的H村村长dadzhi,决定在村中建立一个瞭望塔,以此加强村中的治安。我们将H村抽象为一维的轮廓。如下图所示 我们可以用一条山的上方轮廓折线(x1, y1), (x2, y2), …. (xn, y...

173

【Excel VBA 编程】表格内自动生成进度条

在表格中生成进度条,进度条需要自适应单元格的宽度,根据不同进度区间变换颜色,并且按照进度数据大小显示其长短

wei1019的专栏 1519

告别F5失灵!手把手教你为Cursor配置.Net Core控制台项目专属调试环境

本文详细指导如何在Cursor编辑器中为.Net Core控制台项目配置专属调试环境,解决F5失灵等常见问题。从调试器选择到launch.json配置,再到高级调试技巧,帮助开发者高效搭建完整的调试工具链,提升开发效率。

weixin_28834765的博客 285

BZOJ 1038: [ZJOI2008]瞭望塔【半平面交】

题目传送门 题目分析: 先把相邻两个点形成的线拿来做一个半平面交得到可行区域。显然是个下凸壳。 如果在一条山的轮廓线的正上方上没有凸壳的顶点,那么在这条线上肯定是取两个端点之一最优。 如果正上方有凸壳的顶点,那么有可能取顶点最优。 所以只需要枚举所有的端点和顶点取最优解即可。 (注意凸壳的顶点的横坐标可能小于a[1].x或大于a[n].x) Code: #include<cstdio>...

Master.Yi的博客 301

STM32CubeMX之定时器输入捕获

上一章介绍了STM32定时器的PWM输出功能,定时器的几个通道除了有输出功能外,还可以做输入用,可捕获信号的上升沿或下降沿,可以用于测量信号的频率、周期、占空比等。本篇文章将介绍用STM3...

zhang062061的专栏 1339

【半平面交】【计算几何】[BZOJ1038][ZJOI2008]瞭望塔

题目描述致力于建设全国示范和谐小村庄的H村村长dadzhi,决定在村中建立一个瞭望塔,以此加强村中的治安。我们将H村抽象为一维的轮廓。如下图所示 我们可以用一条山的上方轮廓折线(x1, y1), (x2, y2), …. (xn, yn)来描述H村的形状,这里x1 < x2 < …< xn。瞭望塔可以建造在[x1, xn]间的任意位置, 但必须满足从瞭望塔的顶端可以看到H村的任意位置。可见在不同的位

JeremyGJY的专栏 747

JAVA:Spring Boot3 集成 ShardingSphere 实现数据分库分表

本文介绍了基于Spring Boot和ShardingSphere-JDBC实现分库分表与读写分离的解决方案。针对高并发、大数据量场景下单库单表的性能瓶颈,通过配置ShardingSphere-JDBC实现:1)订单表按user_id和order_id分片到两个库和两张表;2)读写分离,写操作路由至主库,读操作在从库间负载均衡。方案使用Druid连接池优化,支持业务透明,无需修改SQL。

木头 660

【定位模块项目实战】正态分布变换(NDT)定位及建图(依赖高精度点云地图和三维激光雷达的定位方案)

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录系列文章目录前言一、正态分布变换(NDT)定位解决的主要问题二、正态分布变换(NDT)定位的核心思想三、NDT算法流程1.多元正态分布概念2.网格化并计算正态分布参数3.变换参数和最大似然四、使用C++实现NDT配准参考资料 前言 认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长! 本文先对依赖高精度地图和激光雷达的定位技术–正态分布变换(NDT)定位做个简单的介绍,具体

qq_35635374的博客 4411

BZOJ 1038: [ZJOI2008]瞭望塔(半平面交)

题目 对于每个坡,能看到它的范围为一个半平面,做半平面交得到一个下凸壳。 发现答案一定在下凸壳的顶点或折线的顶点处取。 AC Code: #include<bits/stdc++.h> #define maxn 1005 #define eps 1e-8 using namespace std; int n; struct Point{ double x,y; Point (do...

Freopen的博客 238

Allegro如何设置走线自动删除重复走线操作指导

Allegro如何设置走线是自动删除重复走线操作指导在PCB布线的时候,点到点需要重复走一段线的时候,希望原来的线段自动被删除,Allegro设计的时候支持这个操作如下图,重复走中间的线段的时候,希望下方的走线自动删除具体操作如下This section is describe what the function allegro have ,helpfully could let user know more about allegroAllegro Design and Analysis includes

weixin_54787054的博客 4498

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

题目: 我是超链接 题解: 很显然,只有瞭望塔和每个山顶形成直线的斜率的绝对值大于对应山坡的斜率,这个山坡才能看见。不难想到对所有的山坡求一个半平面交然后找到有山顶存在的部分,这个nO(n2)O(n^2)求个半平面交吧 一开始还以为瞭望塔只能建在山顶上,突然发现还可以建在山坡上,那么这个最优的点不在【山顶对应的凸包上】就在【凸包的顶点对应的山坡上】 1A 代码: #inc

薇小薇 495

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【bzoj1038】【ZJOI2008】【瞭望塔】【半平面交】

Description   致力于建设全国示范和谐小村庄的H村村长dadzhi,决定在村中建立一个瞭望塔,以此加强村中的治安。我们 将H村抽象为一维的轮廓。如下图所示 我们可以用一条山的上方轮廓折线(x1, y1), (x2, y2), …. (xn, yn)来描 述H村的形状,这里x1 以看到H村的任意位置。可见在不同的位置建造瞭望塔,所需要建造的高度是不同的。为了节省开支,dad

sunshinezff的专栏 930

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

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

bzoj1038 [ZJOI2008]瞭望塔原题地址:http://www.lydsy.com/JudgeOnline/problem.php?id=1038题意: 村中要建立一个瞭望塔,我们将H村抽象为一维的轮廓。如下图所示 我们可以用一条山的上方轮廓折线(x1, y1), (x2, y2), …. (xn, yn)来描述H村的形状,这里x1 < x2 < …< xn。瞭望塔可以建造在[x1,

Bfk的博客 521

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

BZOJ 1038 ZJOI2008 瞭望塔 半平面交

题目大意及模拟退火题解:见 http://blog.youkuaiyun.com/popoqqq/article/details/39340759  这次用半平面交写了一遍……求出半平面交之后,枚举原图和半平面交的每个点,求出答案即可 #include #include #include #include #include #define M 310 #define eps 1e-7 using name

世界 1807

[日常摸鱼]bzoj1038[ZJOI2008]瞭望塔-半平面交

这回好好用半平面交写一次… 看了cls当年写的代码看了好久大概看懂了…cls太强辣 #include<cstdio> #include<iostream> #include<algorithm> #define rep(i,n) for(register int i=1;i<=n;i++) #define REP(i,a,b) f...

142

[半平面交] BZOJ1038: [ZJOI2008]瞭望塔

题意致力于建设全国示范和谐小村庄的H村村长dadzhi,决定在村中建立一个瞭望塔。 我们将H村抽象为一维的轮廓。 我们可以用一条山的上方轮廓折线(x1, y1), (x2, y2), …. (xn, yn)来描述,x1 < x2 < …< xn。 瞭望塔可以建造在[x1, xn]间的任意位置, 但必须满足从瞭望塔的顶端可以看到H村的任意位置。 请你写一个程序,帮助dadzhi村长计算塔的最小

Lynstery's blog 670

[BZOJ 1038][ZJOI 2008]瞭望塔(半平面交)

题目链接http://www.lydsy.com/JudgeOnline/problem.php?id=1038思路这个题在上海ACM/ICPC冬令营的比赛中也考过,不是很难,不过想要想到用半平面交来搞还是不容易的。 如上图,手模下可以发现一个点要想看到所有的山顶,肯定是要在相邻两个山顶连线的半平面交中。那么显然这个相对高度最小的点肯定是在半平面交的边界上,因此有如下两种情况: 1、这个点在

某沙茶的OI代码库 1589

BZOJ 1038: [ZJOI2008]瞭望塔 半平面交

Description  致力于建设全国示范和谐小村庄的H村村长dadzhi,决定在村中建立一个瞭望塔,以此加强村中的治安。我们 将H村抽象为一维的轮廓。如下图所示 我们可以用一条山的上方轮廓折线(x1, y1), (x2, y2), …. (xn, yn)来描 述H村的形状,这里x1 < x2 < …< xn。瞭望塔可以建造在[x1, xn]间的任意位置, 但必须满足从瞭望塔的顶端可 以看到

I good vegetable a! 579

[BZOJ1038][洛谷P2600]-[ZJOI2008]瞭望塔-半平面交

这恶心的题,细节实在是有点多啊= =…. 题目 BZOJ1038传送门 听说洛谷上的数据好像要苛刻一些,所以也放一个门 洛谷P2600传送门 题目大意 H村村长dadzhi决定在村中建立一个瞭望塔,以此加强村中的治安。将H村抽象为平面轮廓折线,用(x1, y1), (x2, y2), …. (xn, yn)来描述H村的形状,这里x1 &lt; x2 &lt; …&lt; xn。...

泉華子的OI足迹 511

bzoj 1038: [ZJOI2008]瞭望塔 [半平面交]

1038: [ZJOI2008]瞭望塔 题意:一个山形轮廓线,建一个瞭望塔能看到所有点,求最小高度。 注意是山形 相邻两个点连线,半平面交,保留上面的。 不会出现一个点和隔着一些点的另一个点连线贡献的情况,因为瞭望塔一定高于最高点。 然后是个线性分段函数,枚举最值点... md有个点一直过不了,怒加特判 #include &lt;iostream&gt; #include &lt;cstdio...

weixin_33894640的博客 159

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

1038: [ZJOI2008]瞭望塔 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 2125  Solved: 886 [Submit][Status][Discuss] Description   致力于建设全国示范和谐小村庄的H村村长dadzhi,决定在村中建立一个瞭望塔,以此加强村中的治安。我们 将H村抽象为一维的轮廓。如

clover_hxy的博客 582

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

题目链接 BZOJ/洛谷 题目描述 致力于建设全国示范和谐小村庄的H村村长dadzhi,决定在村中建立一个瞭望塔,以此加强村中的治安。 我们将H村抽象为一维的轮廓。如下图所示: 我们可以用一条山的上方轮廓折线\((x_1,y_1),(x_2,y_2)…(x_n,y_n)\)来描述H村的形状,这里\(x_1 < x_2 < …< x_n\)。瞭望塔可以建造在\([x_1,x_n]...

weixin_30617561的博客 101
上一篇: [BZOJ1069]SCOI2007最大土地面积|凸包|旋转卡壳
下一篇: [BZOJ4010]HNOI2015菜肴制作|拓扑排序+堆
Tag_king
博客等级 码龄12年 15粉丝 164原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值