[BZOJ]1069 [SCOI2007] 最大土地面积 凸包 + 旋转卡壳

手把手教你用TP4056和PMOS管搭建锂电池自动切换电路(含元器件选型指南) 本文详细介绍了如何使用TP4056和PMOS管搭建锂电池自动切换电路,包括核心架构设计、元器件选型指南和PCB布局优化。通过智能充电算法和电源路径切换模块,实现外部供电与锂电池的无缝切换,提升便携式设备的电源管理效率。 阅读详情

1069: [SCOI2007]最大土地面积

Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 3720   Solved: 1471
[ Submit][ Status][ Discuss]

Description

  在某块平面土地上有N个点,你可以选择其中的任意四个点,将这片土地围起来,当然,你希望这四个点围成
的多边形面积最大。

Input

  第1行一个正整数N,接下来N行,每行2个数x,y,表示该点的横坐标和纵坐标。

Output

  最大的多边形面积,答案精确到小数点后3位。

Sample Input

5
0 0
1 0
1 1
0 1
0.5 0.5

Sample Output

1.000

HINT

数据范围 n<=2000, |x|,|y|<=100000

Source

[ Submit][ Status][ Discuss]


HOME Back

  首先很显然四个点一定在凸包上, 其次... n只有两千? 暴力枚举对角线, 以对角线为底, 分别在两边找最大面积三角形. 很容易发现这是单调的, 像旋(xuan)转(zhuan)卡(qia)壳(ke)那样搞即可.

#include<bits/stdc++.h>
#define pp pop_back
#define pb push_back
using namespace std;
int n, m;
double ans;
struct Vector {
	double x, y;
	Vector() {}
	Vector(double x, double y) : x(x), y(y) {}
	inline friend bool operator < (const Vector &r, const Vector &s) {
		return r.x < s.x || (r.x == s.x && r.y < s.y);
	}
	inline friend Vector operator - (const Vector &r, const Vector &s) {
		return Vector(r.x - s.x, r.y - s.y);
	}
};
typedef Vector Point;
vector<Point> pts, cvx;
inline double cross (const Vector &r, const Vector &s) {
	return r.x * s.y - r.y * s.x;
}
inline double area(const Point &A, const Point &B, const Point &C) {
	return cross(B - A, C - A);
}
inline void Convex_Hull() {
	sort(pts.begin(), pts.end());
	for (int i = 0; i < n; ++ i) {
		while (m > 1 && area(cvx[m - 2], cvx[m - 1], pts[i]) >= 0) cvx.pp(), m --;
		cvx.pb(pts[i]), m ++;
	}
	int k = m;
	for (int i = n - 2; ~i; -- i) {
		while (m > k && area(cvx[m - 2], cvx[m - 1], pts[i]) >= 0) cvx.pp(), m --;
		cvx.pb(pts[i]), m ++;
	}
}
int main() {
	scanf("%d", &n);
	for (int i = 1; i <= n; ++ i) {
		double x, y;
		scanf("%lf%lf", &x, &y);
		pts.pb(Point(x, y));
	}
	Convex_Hull();
	for (int i = 0; i < m - 1; ++ i) {
		int h = i + 1, t = i + 3;
		for (int j = i + 2; j < m - 2; ++ j) {
			while (h < j - 2 && area(cvx[i], cvx[j], cvx[h]) <= area(cvx[i], cvx[j], cvx[h + 1])) h ++;
			while (t <= j || (t < m - 2 && area(cvx[i], cvx[t], cvx[j]) <= area(cvx[i], cvx[t + 1], cvx[j]))) t ++;
			ans = max(ans, area(cvx[i], cvx[j], cvx[h]) + area(cvx[i], cvx[t], cvx[j]));
		}
	}
	printf("%.3f\n", ans / 2);
}


Oracle EBS 帐套(Ledger/SOB)如何定义会计主体、如何支撑多准则 / 多报告、组织与帐套的绑定关系、以及项目落地时的设计差异。下面从实现逻辑、核心要素、组织模型、多账簿、科目设计、项 本文对比了Oracle EBS R12与SAP S/4HANA在帐套(Ledger)设计上的核心差异。Oracle采用4C架构(科目/币种/日历/准则),帐套作为独立会计主体,主辅账物理隔离;SAP则以公司代码为主体,通过平行分类账在同一凭证中实现多准则核算。关键差异体现在:Oracle强调边界隔离,适合差异大的集团;SAP注重统一视图,适合实时合并需求。实施时需注意:Oracle避免过度建账套,SAP需统筹科目与维度设计。两者分别体现了"盒子"与"滤镜"的设计哲学。 阅读详情

相关推荐

智能体在车联网中的应用:第31天 基于RLlib的多智能体PPO实战:MAPPO算法解决simple_spread合作任务

本文介绍了如何利用RLlib框架实现多智能体强化学习算法MAPPO,解决simple_spread任务。首先分析了RLlib的架构设计理念和多智能体支持特性,包括策略映射、环境包装等核心组件。然后详细解析了simple_spread环境的任务定义、观察空间和奖励函数设计。最后回顾了MAPPO算法原理,说明其如何在RLlib中实现集中式训练与分布式执行的CTDE范式。文章提供了完整的安装指南和环境配置方法,帮助读者快速搭建多智能体强化学习实验环境。

IT深耕十余载,大道之简 1331

[BZOJ1069][SCOI2007][凸包][旋转卡壳]最大土地面积

[Problem Description] 在某块平面土地上有N个点,你可以选择其中的任意四个点,将这片土地围起来,当然,你希望这四个点围成的多边形面积最大。 [Algorithm] 凸包 旋转卡壳 [Analysis] 首先选择的这4个点一定在凸包上,所以先求一下凸包。然后枚举四边形的其中一条对角线,然后想办法求出对角线两侧使得四边形面积最大的两个点。假设枚举对角线的时候固定一个点,另

gaotianyu1350的专栏 1091

YOLOv13+SAHI实战:5步搞定无人机航拍小目标检测(附VisDrone数据集调参技巧)

本文详细介绍了如何结合YOLOv13与SAHI(切片辅助超推理)技术,在VisDrone2019数据集上实现高效的无人机航拍小目标检测。通过5个实战步骤,包括环境配置、SAHI参数解析、数据集调优、完整训练推理流程和性能优化技巧,帮助开发者显著提升小目标检测的准确率和效率。

egg99的博客 429

BZOJ 1069 SCOI 2007 最大土地面积 凸包+旋转卡壳

题目大意:给出平面上的一些点,求其中四个点的最大四边形的面积。 思路:简单yy一下发现这些点肯定都在凸包上,先求个凸包。然后直接暴力肯定是不行的,我们需要一个O(n^2)的做法,比较简单的想法是枚举最后要求的四边形的一条对线,那么这个四边形就被分割成了两个三角形,剩下两个点与这条线组成的三角形的面积和就是答案。 按照旋转卡壳的思想不难发现,这两个点都是单调的。所以枚举对角线然后扫n圈就

(╯°口°)╯(┴—┴ 2370

ZYNQ实战:如何用AXI-stream FIFO解决跨时钟域数据同步难题(附完整代码)

本文深入探讨了在ZYNQ项目中,如何利用AXI-Stream FIFO有效解决PS与PL之间的跨时钟域数据同步难题。文章详细分析了异步FIFO的架构设计、关键配置参数,并提供了PS端软件策略与PL端逻辑设计的完整代码示例,旨在帮助开发者构建稳定可靠的数据流通道,优化系统性能。

nginx7reverse的博客 754

Python OpenCV基于颜色通道分离法去除图片中的红色印章

最近一段时间的工作都是研究如何去除图片中的红色印章,在网上查找了大量的大佬写过的方法,发现大多数是采取颜色通道分离法来做,并且效果还不错。站在前人的肩膀上,我又做了些许调整,谈不上是改进,但是能应对更对的情况总还是好的,特此记录。 拿发票做例子,印章相较于其它部分最大的不同就是印章是红色的,而其它部分不是(这是一句废话)。 那么第一步当然就是将红色分离出来,这一步可以采用Python第三方库OpenCV里的 cv2.split()方法,该方法是把RGB图像的三个通道拆分开来,得...

wl_Honest的博客 1万+

[BZOJ1069]SCOI2007最大土地面积|凸包|旋转卡壳

这大概才是真正的第一题计算几何了。。首先这四个点肯定在凸包上,所以求出凸包,之后枚举四边形的对角线AB,凸包求出来之后点是按逆时针排序的,不妨设B在A的逆时针方向,那么就在A逆时针转到B的点之间取一个C点使三角形ABC面积最大,这个用叉积很方便,再在B逆时针转到A的点之间曲一个D使三角形ABD面积最大,现在ABCD就是以AB为对角线面积的最大值。。 当A固定B逆时针转的时候C,D都是逆时

Tag_king的专栏 1045

VMware Workstation Pro必备技巧:5分钟搞定Ubuntu虚拟机磁盘瘦身(附常见错误解决)

本文详细介绍了如何为VMware Workstation Pro中的Ubuntu虚拟机进行磁盘瘦身,解决.vmdk文件只增不减的问题。通过清理系统垃圾、使用零填充空闲空间,并利用vmware-toolbox-cmd或vmware-vdiskmanager工具进行压缩,可有效回收被无效占用的磁盘空间。文章还提供了常见错误解决方案和预防性维护建议,帮助用户高效管理虚拟机存储。

sea99的博客 296

BZOJ1069 SCOI2007 最大土地面积 凸包、旋转卡壳

传送门 在这里假设可以选择两个相同的点吧…… 那么选出来的四个点一定会在凸包上 建立凸包,然后枚举这个四边形的对角线。策略是先枚举对角线上的一个点,然后沿着凸包枚举另一个点。在枚举另一个点的过程中可以使用旋转卡壳找到在对角线两侧、距离对角线最远的两个点,这样的四个点就可以贡献答案。总时间复杂度\(O(n^2)\) #include<iostream> #include<cstd...

weixin_30565199的博客 133

【MFRC522】STM32与MFRC522的SPI通信优化及常见问题解析

本文深入解析了STM32与MFRC522进行SPI通信的优化方法与常见问题。从基础的硬件连接到SPI时序优化,再到关键的寄存器配置(如RFCfgReg设为0x4F以提升读卡稳定性),文章提供了详细的调试技巧和实战排坑指南,帮助开发者实现稳定高效的IC读卡应用。

yhn45678901的博客 841

scratch经典游戏主题源码分享,包含了20多款经典游戏

经典游戏案例:1、360度角度射击游戏 2、捕鱼达人 3、超级马里奥 4、超级玛丽 5、吃豆人相关 6、穿着喷气背包的海龟 7、大鱼吃小鱼 8、俄罗斯方块 9、飞机大战 10、愤怒的小鸟 11、黄金矿工 12、节奏大师 13、连连看 14、迷宫游戏 15、跑酷游戏 16、扫雷 17、水果忍者 18、坦克大战 19、推箱子 20、消除泡泡 21、保卫萝卜 22、植物大战僵尸

IT_Scratch的博客 1万+

【bzoj1069】[SCOI2007]最大土地面积 凸包+旋转卡壳

旋转卡壳是利用一种奇妙的单调性,比较有意思。 枚举一下对角线,旋转卡壳在两边分别找面积最大的三角形。 #include #include #include #include #include #include #define maxn 4010 using namespace std; struct yts { double x,y; }a[maxn],s[maxn]; in

Oxer的专栏 604

【乐企-工具篇】有关乐企发票文件生成- OFD和PDF文件生成

有关乐企发票文件生成-OFD和PDF文件生成

九七的博客 2052

【BZOJ 1069】【SCOI 2007】最大土地面积 凸包+旋转卡壳

因为凸壳上对踵点的单调性所以旋转卡壳线性绕一圈就可以啦啦啦~~~ 先求凸包,然后旋转卡壳记录$sum1$和$sum2$,最后统计答案就可以了 #include<cmath> #include<cstdio> #include<cstring> #include<algorithm> #define read(x) x=get...

as2886089的博客 175

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

BZOJ1069 SCOI2007最大土地面积(凸包+旋转卡壳)

  求出凸包,显然四个点在凸包上。考虑枚举某点,再移动另一点作为对角线,容易发现剩下两点的最优位置是单调的。过程类似旋转卡壳。 #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include&...

weixin_30677617的博客 143

OV9734 DATASHEET,完整规格书

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

【BZOJ1069】【SCOI2007】—最大土地面积(凸包+旋转卡壳)

传送门 考虑枚举任意222个点,那么只需要枚举第二个点的时候旋转卡壳就可以O(n)O(n)O(n)得到最远点对了 #include&lt;bits/stdc++.h&gt; using namespace std; inline int read(){ char ch=getchar(); int res=0,f=1; while(!isdigit(ch)){if(ch=='-')f=-f;...

Stargazer的博客 205

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

BZOJ1069 || 洛谷P4166 [SCOI2007]最大土地面积【凸包+旋转卡壳】

Time Limit: 1 Sec Memory Limit: 128 MB Description 在某块平面土地上有N个点,你可以选择其中的任意四个点,将这片土地围起来,当然,你希望这四个点围成的多边形面积最大。 Input 第1行一个正整数N,接下来N行,每行2个数x,y,表示该点的横坐标和纵坐标。 Output 最大的多边形面积,答案精确到小数点后3位。 HINT 数据范围 n<=2...

niiick 202

BZOJ 1069: [SCOI2007]最大土地面积 凸包,旋转卡壳

Description  在某块平面土地上有N个点,你可以选择其中的任意四个点,将这片土地围起来,当然,你希望这四个点围成 的多边形面积最大。 Input  第1行一个正整数N,接下来N行,每行2个数x,y,表示该点的横坐标和纵坐标。 Output  最大的多边形面积,答案精确到小数点后3位。 Sample Input 50 01 01 10 10.5 0.5 Sample Output

I good vegetable a! 559

BZOJ1069 [SCOI2007]最大土地面积 【凸包 + 旋转卡壳】

题目链接 BZOJ1069 题解 首先四个点一定在凸包上 我们枚举对角线,剩下两个点分别是两侧最远的点 可以三分,复杂度\(O(n^2logn)\) 可以借鉴旋转卡壳的思想,那两个点随着对角线的一定单调不减,可以用两个指针维护,复杂度\(O(n^2)\) #include<algorithm> #include<iostream> #include<cstr...

weixin_30500663的博客 69

bzoj1069 [SCOI2007]最大土地面积(凸包+旋转卡壳)

bzoj1069 [SCOI2007]最大土地面积原题地址:http://www.lydsy.com/JudgeOnline/problem.php?id=1069题意: 在某块平面土地上有N个点,你可以选择其中的任意四个点,将这片土地围起来,当然,你希望这四个点围成的多边形面积最大。数据范围 n<=2000, |x|,|y|<=100000题解: 首先,发现这四个点肯定都在凸包上,因为倘若

Bfk的博客 420

[BZOJ 1069][SCOI 2007]最大土地面积(凸包+旋转卡壳)

题目链接http://www.lydsy.com/JudgeOnline/problem.php?id=1069思路计算几何的题真心不好做啊。。。 显然最大的四边形的四个点肯定是在凸包上的,因此第一步就是用Graham算法把凸包求出来,这个很简单就不罗嗦了。 然后就是旋转卡壳了,很多人的题解里都说了是枚举四边形的一条对角线,然后卡出对角线两边的那两个点,更新面积最大值,复杂度是O(n2)O(n^

某沙茶的OI代码库 898

[BZOJ1069][SCOI2007]最大土地面积 凸包+旋转卡壳

1069: [SCOI2007]最大土地面积 Time Limit:1 SecMemory Limit:128 MBSubmit:3669Solved:1451[Submit][Status][Discuss] Description   在某块平面土地上有N个点,你可以选择其中的任意四个点,将这片土地围起来,当然,你希望这四个点围成的多边形面积最大。 ...

weixin_30262255的博客 124

BZOJ 1069 [SCOI 2007] 最大土地面积 (凸包+旋转卡壳)

题目链接:BZOJ 1069 #include #include #include #include #include using namespace std; const int maxn=2000+10; int N,top; int L[maxn],R[maxn]; struct node{ double x,y; }p[maxn],point,s[maxn]; double g

顺 678

2018.10.18【SCOI2007】【BZOJ1069】【洛谷P4166】最大土地面积(凸包)(旋转卡壳)...

BZOJ传送门 洛谷传送门 解析: 首先,最大的土地面积选出来的四个点一定在凸包上。 如果不在,总是可以将一个点移动到凸包上使得面积更大,就不详细证明了。 于是先求凸包,简化问题,最朴素的做法就是枚举凸包上的四个点。 那么,我们得到了一个O(n4)O(n^4)O(n4)的优秀 做法。 考虑是不是其中每一个都必须要求出来? 显然不是,我们把...

anlongyi8087的博客 222
上一篇: [BZOJ]2648 SJY摆棋子 KD-Tree
下一篇: [BZOJ]3203 [SDOI2013] 保护出题人 三分
MaxMercer
博客等级 码龄10年 55粉丝 261原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值