bzoj1069
四边形的问题可以转化为三角形处理
穷举对角线,然后处理上下两个三角形,旋转卡壳
var x,y:array[..] of double;
q:array[..] of longint;
l,r,i,j,k,t,n:longint;
ans:double; function max(a,b:double):double;
begin
if a>b then exit(a) else exit(b);
end; function cross(i,j,k,r:longint):double;
begin
exit((x[i]-x[j])*(y[k]-y[r])-(x[k]-x[r])*(y[i]-y[j]));
end; procedure swap(var a,b:double);
var c:double;
begin
c:=a;
a:=b;
b:=c;
end; procedure sort(l,r: longint);
var i,j: longint;
p,q:double; begin
i:=l;
j:=r;
p:=x[(l+r) shr ];
q:=y[(l+r) shr ];
repeat
while (x[i]<p) or (x[i]=p) and (y[i]<q) do inc(i);
while (p<x[j]) or (p=x[j]) and (q<y[j]) do dec(j);
if not(i>j) then
begin
swap(x[i],x[j]);
swap(y[i],y[j]);
inc(i);
j:=j-;
end;
until i>j;
if l<j then sort(l,j);
if i<r then sort(i,r);
end; begin
readln(n);
for i:= to n do
readln(x[i],y[i]);
sort(,n);
q[]:=;
t:=;
for i:= to n do
begin
while (t>) and (cross(q[t],q[t-],i,q[t-])<=) do dec(t);
inc(t);
q[t]:=i;
end;
k:=t;
for i:=n- downto do
begin
while (t>k) and (cross(q[t],q[t-],i,q[t-])<=) do dec(t);
inc(t);
q[t]:=i;
end;
for i:= to t- do
q[i+t-]:=q[i];
for i:= to t- do
begin
l:=i+;
r:=i+;
while (r<i+t-) and (cross(q[i+],q[i],q[r],q[i])<cross(q[i+],q[i],q[r+],q[i])) do inc(r);
ans:=max(ans,cross(q[i+],q[i],q[i+],q[i])+cross(q[i+],q[i],q[r],q[i]));
for j:=i+ to i+t- do
begin
while (l<j-) and (cross(q[l+],q[i],q[j],q[i])>cross(q[l],q[i],q[j],q[i])) do inc(l);
while (r<i+t-) and (cross(q[j],q[i],q[r+],q[i])>cross(q[j],q[i],q[r],q[i])) do inc(r);
ans:=max(ans,cross(q[l],q[i],q[j],q[i])+cross(q[j],q[i],q[r],q[i]));
end;
end;
ans:=ans/;
writeln(ans::);
end.
bzoj1069的更多相关文章
- BZOJ1069 SCOI2007最大土地面积(凸包+旋转卡壳)
		
求出凸包,显然四个点在凸包上.考虑枚举某点,再移动另一点作为对角线,容易发现剩下两点的最优位置是单调的.过程类似旋转卡壳. #include<iostream> #include<c ...
 - BZOJ1069 [SCOI2007]最大土地面积  【凸包 + 旋转卡壳】
		
题目链接 BZOJ1069 题解 首先四个点一定在凸包上 我们枚举对角线,剩下两个点分别是两侧最远的点 可以三分,复杂度\(O(n^2logn)\) 可以借鉴旋转卡壳的思想,那两个点随着对角线的一定单 ...
 - [POJ2187][BZOJ1069]旋转卡壳
		
旋转卡壳 到现在依然不确定要怎么读... 以最远点对问题为例,枚举凸包上的两个点是最简单的想法,时间复杂度O(n2) 我们想象用两条平行线卡着这个凸包,当其中一个向某个方向旋转的时候另一个显然也是朝同 ...
 - [BZOJ1069][SCOI2007]最大土地面积(水平扫描法求凸包+旋转卡壳)
		
题意:在某块平面土地上有N个点,你可以选择其中的任意四个点,将这片土地围起来,当然,你希望这四个点围成. 的多边形面积最大.n<=2000. 先求凸包,再枚举对角线,随着对角线的斜率上升,另外两 ...
 - 【BZOJ-1069】最大土地面积       计算几何 + 凸包 + 旋转卡壳
		
1069: [SCOI2007]最大土地面积 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 2707 Solved: 1053[Submit][Sta ...
 - bzoj1069 SCOI2007 最大土地面积
		
1069: [SCOI2007]最大土地面积 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 2560 Solved: 983 Description ...
 - bzoj1069 [SCOI2007]最大土地面积 旋转卡壳
		
1069: [SCOI2007]最大土地面积 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 3767 Solved: 1501[Submit][Sta ...
 - 凸包(BZOJ1069)
		
顶点一定在凸包上,我们枚举对角线,观察到固定一个点后,随着另一个点的增加,剩下两个点的最优位置一定是单调的,于是就得到了一个优秀的O(n^2)做法. #include <cstdio> # ...
 - BZOJ1069 SCOI2007 最大土地面积 凸包、旋转卡壳
		
传送门 在这里假设可以选择两个相同的点吧-- 那么选出来的四个点一定会在凸包上 建立凸包,然后枚举这个四边形的对角线.策略是先枚举对角线上的一个点,然后沿着凸包枚举另一个点.在枚举另一个点的过程中可以 ...
 
随机推荐
- 09_控制线程_线程睡眠sleep
			
[线程睡眠] 如果需要让当前正在执行的线程暂停一段时间,并进入阻塞状态,则可以通过调用Thread类的静态方法sleep()方法来实现. sleep()方法有两种重载形式: 1.static void ...
 - caffe源码阅读(1)-数据流Blob
			
Blob是Caffe中层之间数据流通的单位,各个layer之间的数据通过Blob传递.在看Blob源码之前,先看一下CPU和GPU内存之间的数据同步类SyncedMemory:使用GPU运算时,数据要 ...
 - POJ 1050 To the Max -- 动态规划
			
题目地址:http://poj.org/problem?id=1050 Description Given a two-dimensional array of positive and negati ...
 - linux中 ECShop的文件不能写
			
解决办法: 1.开放权限 使用命令:chmod -R 777 文件路径 2.关闭SELinux 使用命令:setenforce 0
 - MySQL二进制文件规范安装
			
演示环境介绍 操作系统:CentOS 6.7 (64位) 二进制包:mysql-5.6.30-linux-glibc2.5-x86_64.tar.gz MySQL 下载地址:http://dev.m ...
 - 【转】mysql in语句优化
			
mysql会对sql语句做优化, in 后面的条件不超过一定数量仍然会使用索引.mysql 会根据索引长度和in后面条件数量判断是否使用索引. 另外,如果是in后面是子查询,则不会使用索引. 一个文章 ...
 - 安装eclipse中文汉化包后无法打开eclipse
			
通过在线安装中文汉化包后一直提示无法启动程序在.log中查看日志 !SESSION 2016-01-15 11:22:57.959 ---------------------------------- ...
 - js中的callback(阻塞同步或异步时使用)
			
1.回调就是一个函数的调用过程,函数a有一个参数,这个参数是个函数b,当函数a执行完以后执行函数b, 那么这个过程就叫回调 eg. function a(callback){ alert('paren ...
 - 【原创】一起学C++  之enum   ---------C++ primer plus(第6版)
			
枚举 定义:在默认情况下讲整数值赋给枚举量,第一个枚举量的值为0,第二个枚举量的值为1,依次+1 一.定义一个枚举,枚举类型,枚举量 *与C#相比个人认为C++的enum不好一点是不能通过枚举名点其中 ...
 - 2014年度辛星html教程夏季版第五节
			
如果读者是一位后台开发者,那么肯定会知道什么叫表单,这里我们就介绍一下前台如何使用表单,表单的使用也是我们编写网页的必须经历的一关,而且,表单也往往是我们网站的漏洞和弱点出现的地方. ******** ...