bzoj 1069 [SCOI2007]最大土地面积——旋转卡壳

题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1069

发现 n 可以 n^2 。所以枚举对角线,分开的两部分三角形就可以旋转卡壳了。

注意坐标是实数。忘了改生成函数调了 2h+ ……

也不知道用不用管凸包上只有 3 个点的情况。反正这样的话就是枚举一个凹进去的三角形的最小面积罢了。

#include<cstdio>
#include<cstring>
#include<algorithm>
#define db double
using namespace std;
const int N=2005; const db INF=4e10+5;
int n,tot,sta[N],top;db ans;
struct Node{db x,y;Node(db a=0,db b=0):x(a),y(b) {}///db!!!!!!bool operator< (const Node &b)const{return x<b.x||(x==b.x&&y<b.y);}Node operator- (const Node &b)const{return Node(x-b.x,y-b.y);}
}t[N],a[N];
db Mx(db a,db b){return a>b?a:b;}
db Mn(db a,db b){return a<b?a:b;}
db cross(Node u,Node v){return u.x*v.y-u.y*v.x;}
void get_hl()
{sort(t+1,t+tot+1);for(int i=1;i<=tot;i++){while(top>1&&cross(t[sta[top]]-t[i],t[sta[top-1]]-t[i])>=0)top--;sta[++top]=i;}for(int i=tot-1,lm=top;i;i--){while(top>lm&&cross(t[sta[top]]-t[i],t[sta[top-1]]-t[i])>=0)top--;sta[++top]=i;}n=top-1;for(int i=1;i<=n;i++)a[i]=t[sta[i]];
}
void upd(int &x){if(x>n)x-=n;if(x<=0)x+=n;}
void rtc(int st)
{int p0=st+1,p1=st+3;upd(p1);a[n+1]=a[1];//
  for(int cr=st+2;cr<=n;cr++)//<=n is ok not !=(st-1)
    {Node d=a[cr]-a[st];while(cross(a[p0+1]-a[st],d)>cross(a[p0]-a[st],d))p0++,upd(p0);while(cross(d,a[p1+1]-a[st])>cross(d,a[p1]-a[st]))p1++,upd(p1);ans=Mx(ans,cross(a[p0]-a[st],d)+cross(d,a[p1]-a[st]));}
}
int main()
{scanf("%d",&tot);for(int i=1;i<=tot;i++)scanf("%lf%lf",&t[i].x,&t[i].y);get_hl();if(n>=4){for(int i=1,j=n-2;i<=j;i++)rtc(i);//<=n-2 is okprintf("%.3f\n",ans/2);}else{ans=INF;bool flag=0;for(int i=1;i<=n;i++){flag=0;for(int j=1;j<=3;j++)if(t[i].x==a[j].x&&t[i].y==a[j].y){flag=1;break;}if(flag)continue;ans=Mn(ans,cross(t[i]-a[1],t[i]-a[2]));ans=Mn(ans,cross(t[i]-a[2],t[i]-a[3]));ans=Mn(ans,cross(t[i]-a[3],t[i]-a[1]));}printf("%.3f\n",(cross(a[2]-a[1],a[3]-a[1])-ans)/2);}return 0;
}

 

转载于:https://www.cnblogs.com/Narh/p/10146382.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/570037.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里巴巴的26款超神Java开源项目!

1.分布式应用服务开发的一站式解决方案 Spring Cloud Alibaba Spring Cloud Alibaba 致力于提供分布式应用服务开发的一站式解决方案。此项目包含开发分布式应用服务的必需组件&#xff0c;方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。 依托…

eclipse导出doc,文件夹为空

解决方法为&#xff1a; 在Extra Javadoc options输入框中填入-encoding UTF-8 -charset UTF-8

centos7安装csvn

1.赋予svnuser用户sudo权限&#xff0c;以root权限执行: 执行命令vi /etc/sudoers 在## Allow root to run any commands anywhere root ALL(ALL) ALL 之后添加 svnuser ALL(ALL) ALL 赋予用户svnuser sudo的权限。 强制保存并退出Esc:wq! 2.配置csvn使用1-…

为DEV C++/CodeBlock配置gdb调试遇到的问题

DEV C和CodeBlock都只是一个IDE&#xff0c;不能编译调试&#xff0c;需要自己配置MINGW和gdb调试 1、MINGW 在这下载mingw-get-setup.exe安装即可。 https://sourceforge.net/projects/mingw/files/MinGW/ 配置MINGW很简单&#xff0c;安装包就好了&#xff0c;可以只安装gcc和…

Java面向对象第二章课后习题

网盘链接&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/12YzJZY3s4XSq5C94HxWqZA 提取码&#xff1a;3w23 一、商场为员工提供了基本工资、物价津贴以及房租津贴。其中&#xff0c;物价津贴为基本工资的40%&#xff0c;房租津贴为基本工资的25%。 要求&#xff1a;从…

Nagios 网卡流量监控

一、操作被监控机 1、安装SNMP服务 [rootnagios nagios]# yum -y install net-snmp* 2、修改/etc/snmp/snmpd.conf # sec.name source community com2sec notConfigUser 127.0.0.1 public //IP地址设为监控机的IP # group conte…

python 多功能下载网页

#下载网页 #具有功能&#xff1a;捕获异常&#xff0c;重试下载并设置用户代理 import urllib.request import urllib.error #下载网页 #wscp:默认用户代理 web scraping with python 缩写 def download(url, user_agentwscp,num_retries2):print(Downloading:,url) #打印下载路…

Nagios的安装

一、Nagios的安装 1. 准备软件包 在做安装之前确认要对该机器拥有root权限。 确认你安装好的CentOS系统上已经安装如下软件包再继续。 可以用yum命令来安装这些软件包&#xff0c;键入命令&#xff1a; yum install httpd yum install gcc yum install glibc glibc-common yum …

BZOJ4520 CQOI2016K远点对(KD-Tree+堆)

堆维护第k大&#xff0c;每个点KD-Tree上A*式查询较远点&#xff0c;跑得飞快&#xff0c;复杂度玄学。 #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<algorithm> #include<qu…

windows media services 2008外网无法访问

配置好WMS2008之后&#xff0c;内网IP可以正常访问播放。但是用外网IP无法访问&#xff08;已经在路由器做好端口映射&#xff0c;RTSP的默认端口号为554&#xff09;。 后来百度了半天&#xff0c;终于在一个论坛找到了问题的所在。如果想用外网IP访问WMS2008&#xff0c;还需…

里式代换原则

子类型必须能够替换掉它们的父类型一个软件实体如果使用的是一个父类的话&#xff0c;那么一定适用于其子类&#xff0c;而且它察觉不出父类对象和子类对象的区别。也就是说&#xff0c;在软件里面&#xff0c;把父类都替换成它的子类&#xff0c;程序的行为没有任何变化。由于…

Mysql不用

Timeout error occurred trying to start MySQL Daemon.Starting MySQL: [FAILED] 可能是硬盘容量不足导致

Tomcat映射虚拟路径到指定磁盘(eclipse)

用WangEditor富文本编辑&#xff0c;上传图片的时候&#xff0c;本文主要记录一下Tomcat映射虚拟路径到指定磁盘&#xff0c;保存到指定路径中&#xff0c;且能实现页面预览。 在实现之前wangeditor的简单实用请参照博主小道仙的后宫&#xff0c;写的很详细&#xff1a;http://…

JVM内存简析

JAVA的JVM的内存可分为3个区&#xff1a;堆(heap)、栈(stack)和方法区(method) 堆区:1.存储的全部是对象&#xff0c;每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令)2.jvm只有一个堆区(heap)被所有线程共享&#xff0c;堆中不存放基本类型和对象引用&a…

毕业一年啦~

重回博客园 去年毕业,第一份工作,在海外做了一年项目管理... 今年8月份回国,准备开始考研... 同时开始投身区块链开发.,, 区块链改变世界.... 转载于:https://www.cnblogs.com/fudianheg/p/10180431.html

删除指定路径下指定天数之前的文件

echo off ::演示&#xff1a;删除指定路径下指定天数之前&#xff08;以文件的最后修改日期为准&#xff09;的文件。 ::如果演示结果无误&#xff0c;把del前面的echo去掉&#xff0c;即可实现真正删除。 ::本例需要Win2003/Vista/Win7系统自带的forfiles命令的支持 rem 指定待…

go struct结构

1.自定义数组类型 type dics struct {hello stringid intvalue float32} //申明变量 为定义的类型&#xff0c;传值var a dicsa.hello “go语言”a.id 2a.value 1.212.、自定义变量类型&#xff0c;赋给指针 func main() {type dics struct {hello stringid intvalue …

centos下离线安装mysql

卸载原有冲突的依赖包 rpm -e postfix rpm -e mariadb-libs 按顺序安装 rpm -ivh mysql-community-common-5.7.27-1.el7.x86_64.rpm rpm -ivh mysql-community-libs-5.7.27-1.el7.x86_64.rpm rpm -ivh mysql-community-client-5.7.27-1.el7.x86_64.rpm rpm -ivh mysql-com…

记一次es和mq的netty冲突

1.今天在服务里面加了 es 6.4的 依赖包后&#xff0c;在预发布测试时候出现了下列的问题 看了 半天&#xff0c;最后发现是 es的 jar包 和 mq的 netty包 有冲突。然后去idea的 jar包依赖里面查看&#xff0c;mq使用的 是 而es依赖的netty 是多个 不同的包&#xff0c; 而在依赖…

Windows平台下搭建自己的Git服务器

Gitblit 是一个纯 Java 库用来管理、查看和处理 Git 资料库&#xff0c;相当于 Git 的 Java 管理工具。 Gitblit 支持Linux操作系统&#xff0c;因此 Gitblit 需要java运行环境&#xff08;JRE&#xff09;。 如果公司要搭建自己的 Git 服务器&#xff0c;可以使用 Gitblit 这个…