BZOJ1069:最大土地面积(旋转卡壳 & 四边形面积)

2024美团秋招硬件开发笔试真题及答案解析 在 Linux 内核的网络设备驱动中,数据链路层的功能通常由网络协议栈的低层(如以太网驱动)实现,而不是作为网络设备驱动的一个独立层次。在 FreeRTOS 中,任务通知(Task Notifications)是一种轻量级的事件传递机制,用于在任务之间或任务与中断之间传递信号。小美正在开发一个简单的密码生成器,其中一个功能是将输入的字符串中的所有字母按字母顺序循环前移一位(即 'a' 变为 'z','B' 变为 'A',以此类推)。它包含了网络设备的各种参数和方法,用于管理网络设备的初始化、配置和操作。 阅读详情

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


思路:显然该四边形位于凸包上面,那么先求出凸包点。考虑枚举对角线,然后就是裸的旋转卡壳找最大三角形面积了。

# include <iostream>
# include <cstdio>
# include <cmath>
# include <cstring>
# include <algorithm>
using namespace std;
const int maxn = 2003;
int n;
struct node{double x, y;}a[maxn], ans[maxn];
inline node operator-(node a, node b)
{
    return node{a.x-b.x, a.y-b.y};
}
inline double operator*(node a, node b)
{
    return a.x*b.y - a.y*b.x;
}
inline double dis(node a)
{
    return a.x*a.x+a.y*a.y;
}
inline bool cmp(node x, node y)
{
    if(fabs((x-a[1])*(y-a[1]))>0) return (x-a[1])*(y-a[1])>0;
    return dis(x-a[1])<dis(y-a[1]);
}
inline double cha(node a, node b, node c)
{
    return fabs((a-b)*(a-c))/2;
}
int main()
{
    scanf("%d",&n);
    for(int i=1; i<=n; ++i) scanf("%lf%lf",&a[i].x,&a[i].y);
    for(int i=2;i<=n;i++)
        if(a[i].y<a[1].y||(a[i].y==a[1].y&&a[i].x<a[1].x))
            swap(a[1],a[i]);
    sort(a+2,a+n+1,cmp);
    int top=2;ans[1]=a[1];ans[2]=a[2];
    for(int i=3; i<=n; ++i)
    {
        while(top>1&&(a[i]-ans[top-1])*(ans[top]-ans[top-1])>=0) --top;
        ans[++top]=a[i];
    }
    for(int i=0;i<top;i++)
        ans[i] = ans[i+1];
    n=top;
    double imax = 0;
    for(int i=0;i<n-2;i++)
    {
        int ti=(i+3)%n, tj=(i+1)%n;
        for(int j=i+2; j<n; ++j)
        {
            while(cha(ans[i],ans[j],ans[ti]) < cha(ans[i],ans[j],ans[(ti+1)%n])) ti=(ti+1)%n;
            while(cha(ans[i],ans[j],ans[tj]) < cha(ans[i],ans[j],ans[(tj+1)%n])) tj=(tj+1)%n;
            imax = max(imax, cha(ans[i],ans[j],ans[ti])+cha(ans[i],ans[j],ans[tj]));
        }
    }
    printf("%.3f",imax);
    return 0;
}


解决群晖NAS无法拉取docker镜像问题 在2024-06-01日以前,使用SSH登录后是可以直接拉取docker镜像的;但是之后当我们使用SSH登录上群晖NAS,使用【sudo -i】切换到超管拉取镜像会提示报错【error pulling image configuration: Get "https://production.cloudflare.docker.com/registry-v2/docker/registry/v2/blobs/sha256/cf/cff6b68a194a672fd337d8728bfb252071012cce6 阅读详情

相关推荐

001:InVEST学习——产水/水源涵养

InVEST产水模块介绍 前言 (一些碎碎念着急的可以忽略)最开始做inVEST模型是2020年中,应该说对这个软件有很特殊的感情,之前一直想出一个教程,但是因为事情多加上拖延加上懒就耽搁了,事实证明东西不用就确实荒废了,现在面对当初自己做的东西顶多也就能想起一些思路,很多细节都忘了,所以这个教程也相当于是一个备忘录吧。 ...

Victoriaac的博客 2万+

旋转卡壳——凸多边形最小面积外接矩形

凸多边形最小面积外接矩形给定一个凸多边形 P , 面积最小的能装下 P (就外围而言)的矩形是怎样的呢? 从技术上说, 给定一个方向, 能计算出 P 的端点并且构由此造出外接矩形。 但是我们需要测试每个情形来获得每个矩形来计算最小面积吗? 谢天谢地, 我们不必那么干。 对于多边形 P 的一个外接矩形存在一条边与原多边形的边共线。 上述结论有力地限制了矩形的可能范围。 我们不仅不必去检测所有可能

ACMaker的专栏 9711

Unity Android构建报错:compileSdk 35兼容性五层定位法

Android构建中的compileSdk是编译时API目标版本,其升级并非孤立操作,而是触发JDK、Android Gradle Plugin(AGP)、NDK、targetSdk与Unity引擎版本之间强耦合校验的起点。当出现'using a newer Android Gradle plugin to use compileSdk = 35'类报错,本质是代际技术栈错配——例如AGP 7.1.3不识别compileSdk 35所需Java 17语法,或NDK 21与AGP 7.4的ABI规范冲突。该问

weixin_32496547的博客 569

C++旋转卡壳法求最小面积外接矩形

C++实现旋转卡壳法求最小面接外接矩形

MWooooo的博客 1767

基于反事实的因果推理Causal inference based on counterfactuals--一万六千字文献详细解读(因果关系的推理应用)【全文总结】

基于反事实的因果推理Causal inference based on counterfactuals--一万六千字文献详细解读(因果关系的推理应用)【全文总结】---来自一位即将入学的准研一,也希望这篇文章能够激励自己不断走下去!!

qq_46044325的博客 4442

【漏洞复现】CVE-2024-44902 Thinkphp反序列化漏洞

Thinkphp v6.1.3至v8.0.4版本中存在反序列化漏洞,攻击者可利用此漏洞执行任意代码。

渗透之路,攻防之间皆学问 6711

Janitor Troubles Gym - 102007J —— 4条线段构成最大的四边形面积

J Janitor Troubles Time limit: 1s While working a night shift at the university as a janitor, you absent-mindedly erase a blackboard covered with equations, only to realize afterwards that these were ...

天翼之城的博客 645

Python经典编程习题100例:第25例:求各个阶乘的和

不要自卑,去提升实力 互联网行业谁技术牛谁是爹 如果文章可以带给你能量,那是最好的事!请相信自己 加油o~ 本人初学Python,只为熟悉语法编写,大神请勿理会 点击下面链接 Python经典编程100例习题汇总 题目描述: 求1+2!+3!+…+20!的和。 解题思路: &gt; 调用math模块中的factorial函数 代码: import math sum=0 for i in range(1,21): sum+=math.factorial(i) print(sum) ..

优快云 精品推荐 2736

旋转卡壳入门+模板题(POJ 2187)

最初接触旋转卡壳(应该读xuán zhuǎn qiǎ ké)是在CSU上的一道题(这道题至今没A,也不知道是是吗玄学操作),不过这不重要,重要是学到了新知识! 一些历史 1978年, M.I. Shamos’s Ph.D. 的论文”Computational Geometry”标志着计算机科学的这一领域的诞生。 当时他发表成果的是一个寻找凸多边形直径的一个非常简单的算法, 即根据多边形的一对...

永不止步的博客 2652

全新YOLO26有效涨点改进专栏目录 | 本专栏持续更新500+篇内容 | 包含各种卷积、主干网络、各种注意力机制、检测头、损失函数、小目标检测改进、二次创新模块、独家创新等几百种创新点改进

🔥《2026年YOLO26改进专栏》🔥 🚀持续更新500+最前沿创新改进点(顶会顶刊论文/独家创新策略),涵盖主干网络、各种卷积、注意力机制、检测头等模块,助力科研论文发表与模型性能提升,支持检测/分割/分类任务。订阅即获完整可运行项目,提供专业QQ答疑群,适合科研发论文(SCI/CCF/核心)及工业应用(PCB/医学/遥感检测)。专栏价格将逐步上涨,早订更优惠! ⭐特色:非计算机专业友好、模块可自由组合、全网独家创新;📌适用:研究生大论文和小论文创新、小目标检测、多领域科研应用,满足不同研究需求。

Ai缝合怪、助力小伙伴高效发论文 5155

jdbc从入门到精通(全)

前言 Java语言连接数据库(Java DataBase Connectivity) 面向接口/抽象编程(降低程序的耦合度,提高程序的扩展力)类似多态机制

码农研究僧的博客 1758

POJ 2187 Beauty Contest(凸包_旋转卡壳之最远点对)

POJ 2187 Beauty Contest(凸包_旋转卡壳之最远点对)

1318

SAP_FI模块_固定资产期初导入全流程(含导入代码)

SAP 期初导入资产主数据以及金额相关的操作全流程记录,包含了批导程序的代码,以及错误记录

风沙的博客 1405

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

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

(╯°口°)╯(┴—┴ 2371

Camera2Demo

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

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

bzoj1069最大土地面积(旋转卡壳)

bzoj1069 给你n个点围成的土地让你选择四个点使构成的土地面积最大 注: 求对踵点的时候记录每对对踵点的len及dzd[]数组以便计算面积 从第一对对踵点开始CD分别是当前对踵点(最大土地面积的对角线)对应的另外两个点显然寻找CD的过程同样符合旋转卡壳的单调性所以可以O(n)维护出最大面积 #include&lt;cstdio&gt; #include&lt;iostream&gt; #include&lt;algorithm&gt; #include&lt;cmath&g...

kth_xixi 312

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

BZOJ 1069 SCOI2007 最大土地面积 旋转卡壳

题目大意:给定一个点集,任选四点构成一个凸多边形,求面积最大的凸多边形 枚举四边形的对角线,每次固定一个点,扫对角线上的另一个点 每次找到对角线两侧离对角线最远的点,由于两边的点的移动是单调的,因此可以用旋转卡壳维护 此外四边形的面积用对角线叉积的绝对值除以2就可以算出来了- - #include #include #include #include #include #defi

世界 2156

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

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

gaotianyu1350的专栏 1091

BZOJ 1069 最大土地面积(旋转卡壳求最大四边形)

题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1069 题意:给出一个点,从中选出四个点组成的四边形面积最大。 思路:首先显然先求凸包。然后就是旋转卡壳。枚举矩形的对角线i和j,然后用旋转卡壳在其两侧记录到该直线的最大距离的两个点p1,p2。每次旋转p1和p2保持距离最大。   #include &amp;lt;iostream&amp;gt;...

weixin_34323858的博客 228

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

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

Tag_king的专栏 1045

bzoj1069 最大土地面积 旋转卡壳

旋(wo)转(bu)卡(hui)壳(du)裸题。显然四个点一定在凸包上。然后枚举四边形的对角线O(N^2),然后可以发现可以在凸包上O(N)找到在对角线两侧的离对角线最远的点,用这四个点更新答案。        考虑优化时间,在固定对角线的一个定点i,枚举另一个定点j时,考虑两侧最优解x,y,但j沿着凸包逆时针旋转的时候,x,y也沿着凸包逆时针旋转。因此我们只需要找到一开始的x,y,然后就可以O

lych的博客 1741

BZOJ 1069: [SCOI2007]最大土地面积

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

jjs98 898

[BZOJ1069][SCOI2007]最大土地面积

题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1069 如果枚举四边形的四条边,时间复杂度为O(n^4),无法承受。可以换个角度,枚举四边形的对角线,在对角线两侧求出最大三角形面积并相加,则降为O(n^3)。 若使用旋转卡壳法,时间复杂度降为O(n^2),可参考白书4.3.3。 附AC代码: #include #include

function2的博客 1007

[BZOJ]1069 最大土地面积(SCOI2007)

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

L183287669的博客 244

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

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

weixin_30565199的博客 133

bzoj1069-最大土地面积

题目 给定\(n\ (n\le 2000)\)个坐标,求四个坐标使得围起来的四边形面积最大。 分析 最暴力的想法是枚举四个点,然而肯定超时。接着不知道怎么想到中途相遇,然而一点关系都没有。这里用到了一个单调性: 如果在凸包上确定了一个点\(x\),令\(x\)逆时针方向的第一个点为\(y\),这时确定了一个点\(z\)使得\(S_{\triangle XYZ}最大,那么当\)y\(逆时...

dengtan9179的博客 162

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

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

niiick 202

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

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

anlongyi8087的博客 222
上一篇: BZOJ1063:道路设计(树形dp)
下一篇: BZOJ1064:假面舞会(DFS & 思维)
junior19
博客等级 码龄10年 118粉丝 615原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值