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.pswp.cn/news/376772.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/376772.shtml
英文地址,請注明出處:http://en.pswp.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…