POJ 2079
呃,不知道我用的算不算卡壳,总有点枚举的意思。
先求凸包,然后,枚举其中一点,再枚举另一点作为结尾,这个向量旋转一周后,求出最大值面积。这里面用的是旋转卡壳判断的那个式子。
PS:下一篇和这题是一样题意,但用这题的写法去过下一题,是过不了的。但这个写法在POJ 上是400MS,而下一题的写法在POJ上是1000MS。。汗了。。
- #include <iostream>
- #include <cstdio>
- #include <algorithm>
- #include <cmath>
- using namespace std;
- struct point{
- int x,y;
- }p[50050];
- int n;
- int ans[50050],st[50050],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;
- }
- int 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;i++)
- ans[cnt++]=st[i];
- }
- 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;
- double anst=0;
- for(int i=0;i<cnt;i++){
- q=i+1;
- for(int j=i+1;j<cnt;j++){
- while(Triangle(p[ans[i]],p[ans[j]],p[ans[q]])<Triangle(p[ans[i]],p[ans[j]],p[ans[(q+1)%cnt]]))
- q=(q+1)%cnt;
- anst=max(anst,Triangle(p[ans[i]],p[ans[j]],p[ans[q]]));
- }
- }
- return anst;
- }
- int main(){
- while(scanf("%d",&n)!=EOF){
- if(n==-1) break;
- for(int i=0;i<n;i++){
- scanf("%d%d",&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;
- }
POJ 2079的更多相关文章
- hdu 3934&&poj 2079 (凸包+旋转卡壳+求最大三角形面积)
链接:http://poj.org/problem?id=2079 Triangle Time Limit: 3000MS Memory Limit: 30000K Total Submissio ...
- ●POJ 2079 Triangle
题链: http://poj.org/problem?id=2079 题解: 计算几何,凸包,旋转卡壳 复杂度O(N^2),(O(N)什么的就不说了,我觉得我看过的O(N)方法正确性都有问题,虽然有些 ...
- POJ 2079 Triangle (凸包+旋转卡壳)
[题目链接] http://poj.org/problem?id=2079 [题目大意] 给出一些点,求出能组成的最大面积的三角形 [题解] 最大三角形一定位于凸包上,因此我们先求凸包,再在凸包上计算 ...
- poj 2079 Triangle(旋转卡壳)
Triangle Time Limit: 3000MS Memory Limit: 30000K Total Submissions: 8917 Accepted: 2650 Descript ...
- POJ 2079 Triangle [旋转卡壳]
Triangle Time Limit: 3000MS Memory Limit: 30000K Total Submissions: 9525 Accepted: 2845 Descript ...
- poj 2079(旋转卡壳求解凸包内最大三角形面积)
Triangle Time Limit: 3000MS Memory Limit: 30000K Total Submissions: 9060 Accepted: 2698 Descript ...
- POJ 2079 Triangle(凸包+旋转卡壳,求最大三角形面积)
Triangle Time Limit: 3000MS Memory Limit: 30000K Total Submissions: 7625 Accepted: 2234 Descript ...
- POJ - 2079:Triangle (旋转卡壳,求最大三角形)
Given n distinct points on a plane, your task is to find the triangle that have the maximum area, wh ...
- POJ 2079 最大三角形面积(凸包)
Triangle Description Given n distinct points on a plane, your task is to find the triangle that have ...
随机推荐
- UIDynamicBehavior的简单使用:接球小游戏
一.概念扩充: 1.在开发中,我们可以使用UIKit中提供的仿真行为,实现与现实生活中类似的物理仿真动画,UIKit动力学最大的特点是将现实世界动力驱动的动画引入了UIKit,比如重力,铰链连接,碰撞 ...
- Django day15 (一) cbv装饰器 , 中间件
一: 装饰器 二: 中间件
- React.js初探
React.js 菜鸟官方解释: React 是一个用于构建用户界面的 JAVASCRIPT 库. React主要用于构建UI,很多人认为 React 是 MVC 中的 V(视图). React 起源 ...
- JavaScript 关于DOM的事件操作
一.JavaScript的组成 JavaScript基础分为三个部分: ECMAscript:JavaScript的标准语法.包括变量,表达式,运算符,函数,if语句,for语句等. DOM:文档对象 ...
- SQlserver 当输入参数为可选条件
以前很懒,都是用拼接字符串的方式,加上if 语句,根据输入参数是否为空来判断是否需要在where 后加上对应字段的条件限制 但是拼接字符串很烦,又总是被转义符搞得很烦 '''' 所以想了其他办法 分 ...
- 软件架构自学笔记——常见的软件架构(https://jiajunhuang.com/articles/2018_09_16-common_software_archtecture_pattern.md.html)
分层模式 这种模式主要是将设计分层,每一层为其上层提供服务.例如:web开发中我们常常将某些常用的RESTful接口抽象出一个service层. 客户端-服务端模式 客户端和服务端分离,从而解耦.通过 ...
- android开源新闻小程序、3D翻转公告效果、小说检索、Kotlin开发TODO清单等源码
Android精选源码 开源新闻小程序源码分享 android动态壁纸.锁屏动画.来电秀等源码 android笔记App效果源码 Android实现3D版翻页公告效果 android小说搜索阅读源码 ...
- 01--Java IO基础
一.java.io包概览 Java IO包主要可以分为如下4类: 基于字节操作的I/O接口:InputStream和OutputStream. 基于字符操作的I/O接口:Writer和Reader 基 ...
- js 图片轮播代码编辑
图片轮播,将几张图片统一放在展示平台 banner上,通过banner移动将图片轮流播放. <script>// 取对象 var btn_l = document.getElementsB ...
- dubbo之只订阅及只注册
只订阅 问题 如果有两个镜像环境,两个注册中心,有一个服务只在其中一个注册中心有部署,另一个注册中心还没来得及部署,而两个注册中心的其它应用都需要依赖此服务,所以需要将服务同时注册到两个注册中心,但却 ...