HDU 3934

/*这是用的有旋转卡壳的思想。
首先确定i,j,对k进行循环,知道找到第一个k使得cross(i,j,k)>cross(i,j,k+1),如果k==i进入下一次循环。
对j,k进行旋转,每次循环之前更新最大值,然后固定一个j,同样找到一个k使得cross(i,j,k)>cross(i,j,k+1)。对j进行++操作,继续进行下一次,
知道j==k为止。
*/ #include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>using namespace std;struct point{double x,y;
}p[1000100];
int n;int ans[1000100],st[1000100],cnt,stop;bool cmp(point A, point B){if(A.y<B.y) return true;else if(A.y==B.y){if(A.x<B.x) return true;}return false;
}double multi(point a,point b,point c){point p1; p1.x=a.x-c.x; p1.y=a.y-c.y;point p2; p2.x=b.x-c.x; p2.y=b.y-c.y;return p1.x*p2.y-p1.y*p2.x;
}void slove(){cnt=stop=0;st[stop++]=0; st[stop++]=1;for(int i=2;i<n;i++){while(stop>1&&multi(p[i],p[st[stop-1]],p[st[stop-2]])>=0) stop--;st[stop++]=i;}for(int i=0;i<stop;i++)ans[cnt++]=st[i];stop=0; st[stop++]=n-1; st[stop++]=n-2;for(int i=n-3;i>=0;i--){while(stop>1&&multi(p[i],p[st[stop-1]],p[st[stop-2]])>=0) stop--;st[stop++]=i;}for(int i=1;i<stop-1;i++)ans[cnt++]=st[i];
/*	for(int i=0;i<cnt;i++)cout<<ans[i]<<endl;cout<<endl;*/
}double Triangle(point a,point b,point c){point p1; p1.x=a.x-c.x; p1.y=a.y-c.y;point p2; p2.x=b.x-c.x; p2.y=b.y-c.y;return fabs((p1.x*p2.y-p1.y*p2.x)*1.0)/2.0;
}double Area(){int q; int j;double anst=0;for(int i=0;i<cnt;i++){j=(i+1)%cnt;q=(j+1)%cnt;while(Triangle(p[ans[i]],p[ans[j]],p[ans[q]])<=Triangle(p[ans[i]],p[ans[j]],p[ans[(q+1)%cnt]])&&q!=i)q=(q+1)%cnt;    //枚举了当前最远的K点 anst=max(anst,Triangle(p[ans[i]],p[ans[j]],p[ans[q]]));if(q==i) continue;while(j!=i&&q!=i){anst=max(anst,Triangle(p[ans[i]],p[ans[j]],p[ans[q]]));while(Triangle(p[ans[i]],p[ans[j]],p[ans[q]])<=Triangle(p[ans[i]],p[ans[j]],p[ans[(q+1)%cnt]])&&q!=i)q=(q+1)%cnt;j=(j+1)%cnt;}}return anst;
}int main(){while(scanf("%d",&n)!=EOF){//	if(n==-1) break;for(int i=0;i<n;i++){scanf("%lf%lf",&p[i].x,&p[i].y);}sort(p,p+n,cmp);slove();double anst=0;anst=max(anst,Area());printf("%.2lf\n",anst);}return 0;
}

  

转载于:https://www.cnblogs.com/jie-dcai/p/3891337.html

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

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

相关文章

[ios] UILocalNotification实现本地的闹钟提醒【转】

http://www.cnblogs.com/jiangshiyong/archive/2012/06/06/2538204.html转载于:https://www.cnblogs.com/jinjiantong/archive/2013/04/01/2992624.html

sql server根据表中数据生成insert语句

几个收藏的根据数据库生成Insert语句的存储过程[修正版]----根据表中数据生成insert语句的存储过程--建立存储过程&#xff0c;执行spGenInsertSQL 表名--感谢playyuer----感谢szyicol--CREATEproc[dbo].[spGenInsertSQL](tablenamevarchar(256))asbegindeclaresqlvarchar(8000…

Javascript eval()函数 基础回顾

如果您想详细了解ev al和JSON请参考以下链接&#xff1a; eval &#xff1a;https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Global_Functions/Eval JSON&#xff1a;http://www.json.org/ eval函数的工作原理 eval函数会评估一个给定的含有JavaScript代码的…

杂感无题|

今天中午和组里面的人吃饭&#xff0c;聊起了科兴跳楼的事情。这事其实前几天我华为的mentor就转给我了&#xff0c;当时也没太在意&#xff0c;在脉脉上看了看&#xff0c;也不知晓是谁&#xff0c;想着可能又是抑郁症吧。 饭后依旧绕着食堂散步&#xff0c;ly说那个人好像还是…

uva1366_Martian Mining_简单DP

题目不难&#xff0c;却想了好长时间&#xff0c;目测自己DP还是很水。。。囧 思路&#xff1a;舍f[i][j]为前i行j列的最大矿总量不难推出状态转移方程为f[i][j]max(f[i-1][j]line[i][j],f[i][j-1]row[j][i]) 其中line[i][j]为第i行前j个A矿的和&#xff08;a[i][1]a[i][2]...a…

数学图形之Boy surface

这是一个姓Boy的人发现的,所以取名为Boy surface.该图形与罗马图形有点相似,都是三分的图形.它甚至可以说是由罗马曲面变化而成的. 本文将展示几种Boy曲面的生成算法和切图,使用自己定义语法的脚本代码生成数学图形.相关软件参见:数学图形可视化工具,该软件免费开源.QQ交流群: …

开个定时器给echarts组件配置定时更新

我在js文件中开了个定时器&#xff0c;每1s从后端获取数据并解析&#xff0c;然后用异步方法就渲染不出来&#xff0c;改成同步就可以了。 这个解决方法来自于这篇文章&#xff0c;我出的问题和他一样&#xff1a;关于ajax中readyState的值一直为1的问题 这里将ajax参数修改为f…

SDK 操作 list-view control 实例 -- 遍历进程

遍历窗口&#xff0c;获得控件句柄 1 EnumChildWindows(hwndDlg, (WNDENUMPROC)EnumChildProc, NULL); 回调函数 1 BOOL CALLBACK EnumChildProc(HWND hwnd, LPARAM lParam )2 {3 char strCLSName[MAXBYTE] {0};4 GetClassName(hwnd, strCLSName, MAXBYTE);5 if (…

推荐一份不错的清除默认样式的CSS样式

时间过得真快&#xff0c;离 Reset CSS 研究&#xff08;八卦篇&#xff09; 已经 3 个多月了。废话少说&#xff0c;赶紧将技术篇写完吧。 回顾与反思 第一份 reset css 是 Tantek 的 undohtml.css, 很简单的代码&#xff0c;Tantek 根据自己的需要&#xff0c;对浏览器的默认…

python深浅拷贝

在python中&#xff0c;对象赋值实际上是对象的引用。当创建一个对象&#xff0c;然后把它赋给另一个变量的时候&#xff0c;python并没有拷贝这个对象&#xff0c;而只是拷贝了这个对象的引用。 所以一个结构类型被赋给另外一个对象的时候&#xff0c;尽可能不使用 &#xff…

Flash中的SLC/MLC/MLC--基础

参考 1.http://www.upantool.com/jiaocheng/qita/2012/slc_mlc_tlc.html 2.http://www.2ic.cn/html/10/t-432410.html 3.http://kms.lenovots.com/kb/article.php?id15382 4.http://www.albertknight.com/222.html 5.http://ssd.zol.com.cn/371/3716632.html 6.这个图比较多 h…

python定义对象的比较方法

有时候我们需要比较两个对象。比如哪个对象大,哪个对象小。如果我们不告诉python如何比较,那么Python是不知道如何进行比较的。 下面提供实例 #__eq__(self,other)&#xff1a; #在使用比较运算符比较两个对象是否相等的时候会调用这个方法。 #如果是相等&#xff0c;那么应该返…

关于Oracle Insert 语句的子查询 和 with check option的用法

今日睇ocp教程 发现 insert语句还可以子查询例如&#xff1a;INSERT INTO (SELECT employee_id, last_name, email, hire_date, job_id, salary, department_id FROM employees where department_id 50 )VALUES (9999…

apple mac 下使用机械键盘的办法,键盘映射工具软件,apple mac Mechanical keyboard

apple mac 下使用机械键盘的办法&#xff0c;键盘映射工具软件&#xff0c;apple mac Mechanical keyboard 想在苹果电脑 mac 系统下使用 机械键盘&#xff0c;大部分机械键盘不是为mac设计的&#xff0c;所以需要用软件做一下键盘映射。 推荐使用这个&#xff1a;https://pqrs…

Python中键映射多个值的方法:defaultdict

Python中键映射多个值的方法有两种&#xff1a; 想保持元素的插入顺序就应该使用列表&#xff1b; 想去掉重复元素就使用集合并且不关心元素的顺序问题的话应该使用set from collections import defaultdictmapping defaultdict(list)mapping [key].append(value)mapping d…

该不该让Google收录WordPress的目录页和标签页?

只要有一点SEO知识的 站长都会注意利用相关文件和元标签来控制Google对网站的收录&#xff0c;对于WordPress网站来说&#xff0c;除了我们主动添加的内容页面&#xff0c;Google还会收录目录归档页&#xff0c;标签归档页&#xff0c;时间归档页&#xff0c;以及作者归档页。这…

【原创】MapReduce编程系列之表连接

问题描述需要连接的表如下&#xff1a;其中左边是child&#xff0c;右边是parent&#xff0c;我们要做的是找出grandchild和grandparent的对应关系&#xff0c;为此需要进行表的连接。 Tom Lucy Tom Jim Lucy David Lucy Lili Jim Lilei Jim SuSan Lily Green Lily Bians Green…

python logging模块简单使用

logging 是线程安全的&#xff0c;也就是说&#xff0c;在一个进程内的多个线程同时往同一个文件写日志是安全的。 但是多个进程往同一个文件写日志不是安全的。 import loggingLOG_FORMAT "%(asctime)s - %(levelname)s - %(message)s" DATE_FORMAT "%m/%d/…

OpenACC 中parallel 和kernels的区别

Kernels构件 Kernels构件源于PGI Accelerator模型的region构件。嵌套kernels构件里的循环可能会被编译器转换成能在GPU上高效并行的部分。在这个过程中有三步。 1&#xff1a;判断并行中遇到的循环。 2&#xff1a;把抽象的并行转换成硬件上的并行。对于NVIDIA CUDA GPU&#…

ORACLE基本SQL语句-查询篇

一、普通查询 /*查询表数据*/select * from STU /*取出前3行数据*/select * from stu where ROWNUM<3 /*模糊查询*/select * from stu where stu_id like stu001% 说明&#xff1a;通配符“%”代表一个或者多个字符&#xff0c;通配符“_”代表一个字符。 /*别名*/select S…