POJ 1696 Space Ant 極角排序(叉積的應用)

題目大意:給出n個點的編號和坐標,按逆時針方向連接著n個點,按連接的先后順序輸出每個點的編號。

題目思路:Cross(a,b)表示a,b的叉積,若小于0:a在b的逆時針方向,若大于0a在b的順時針方向。每次都sort一下,找出在當前點逆時針方向的最遠的點。數據很小O(N*N*log(N))的復雜度0s AC了……

#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
#include<queue>
#define INF 0x3f3f3f3f
#define MAX 100005using namespace std;int n,pos,ans[MAX];struct node
{int id,x,y;
}point[MAX];int Dist(int x1,int y1,int x2,int y2)
{return sqrt((x1-x2)*(x1-x2)*1.0 + (y1-y2)*(y1-y2)*1.0);
}int Cross(int x1,int y1,int x2,int y2,int x3,int y3)
{return (x1-x2)*(y1-y3)-(x1-x3)*(y1-y2);
}bool cmp(struct node A,struct node B)
{int op=Cross(point[pos].x,point[pos].y,A.x,A.y,B.x,B.y);if(op>0)return true;else if(op==0 && Dist(point[pos].x,point[pos].y,A.x,A.y)<Dist(point[pos].x,point[pos].y,B.x,B.y))return true;return false;
}int main()
{int T,cnt;scanf("%d",&T);while(T--){pos=0;cnt=0;memset(ans,0,sizeof(ans));scanf("%d",&n);scanf("%d%d%d",&point[0].id,&point[0].x,&point[0].y);for(int i=1;i<n;i++){scanf("%d%d%d",&point[i].id,&point[i].x,&point[i].y);if(point[i].y < point[0].y)//找出起點:左下方的點swap(point[0],point[i]);else if(point[i].y==point[0].y && point[i].x < point[0].x)swap(point[0],point[i]);}sort(point,point+n,cmp);ans[cnt++]=point[pos++].id;for(int i=1;i<n;i++){sort(point+i,point+n,cmp);ans[cnt++]=point[pos++].id;}printf("%d ",cnt);for(int i=0;i<cnt;i++)printf("%d%c",ans[i],i==cnt-1?'\n':' ');}return 0;
}
View Code

?

轉載于:https://www.cnblogs.com/alan-W/p/6019998.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/254077.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/254077.shtml
英文地址,請注明出處:http://en.pswp.cn/news/254077.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C#模板匹配創建模板與查找模板函數

class ShapeModulInspect{/// <summary>/// /// </summary>/// <param name="InspectImg">圖像</param>/// <param name="ModulRoi">ROI</param>/// <param name="AngleStart">起始角</param>/…

SuperMap iDesktop之導入數據

SuperMap作為一個平臺軟件有自己的數據格式&#xff0c;現要將ESRI的SHP數據導入到SuperMap的udb數據庫中&#xff0c;可以完成導入&#xff0c;但也不得不說幾點問題。 下面是ArcGIS中批量導入SHP的操作界面。 比較分析 &#xff08;1&#xff09;界面簡潔性 明顯ArcGIS要簡潔…

Ajax教程

AJAX AJAX Asynchronous JavaScript and XML&#xff08;異步的 JavaScript 和 XML&#xff09;。 AJAX 不是新的編程語言&#xff0c;而是一種使用現有標準的新方法。 AJAX 是與服務器交換數據并更新部分網頁的藝術&#xff0c;在不重新加載整個頁面的情況下。 AJAX 是一種在…

dm365 resize

DM368支持視頻的縮放功能&#xff0c;例如DM365可以編碼一個720P的&#xff0c;同時可以以任意分辨率&#xff08;小于720P的分辨率&#xff09;輸出。其中有兩種模式&#xff1a;IMP_MODE_SINGLE_SHOT&#xff0c;IMP_MODE_CONTINUOUS. 在用dm365的時候&#xff0c;用resizer…

SSH

http://www.cnblogs.com/hoobey/p/5512924.html struts --- 控制器 hibernate 操作數據庫 spring 解耦 Struts 、 spring 、 Hibernate 在各層的作用 1 &#xff09; struts 負責 web 層 . ActionFormBean 接收網頁中表單提交的數據&#xff0c;然后通過 Action 進…

C#halcon點擬合圓形函數

public bool FitCircle(double[] X, double[] Y, out double RcX, out double RcY, out double R){t

MyBatis 實踐 -配置

MyBatis 實踐標簽&#xff1a; Java與存儲 Configuration mybatis-configuration.xml是MyBatis的全局配置文件(文件名稱隨意),其配置內容和順序例如以下: properties : 屬性(文件)載入/配置settings : 全局配置參數typeAliases : 定義類型別名typeHandlers : 類型處理器objectF…

DM365視頻處理流程/DM368 NAND Flash啟動揭秘

DM365的視頻處理涉及到三個相關處理器&#xff0c;分別是視頻采集芯片、ARM處理器和視頻圖像協處理器&#xff08;VICP&#xff09;&#xff0c;整個處理流程由ARM核協調。視頻處理主要涉及三個處理流程&#xff0c;分別是視頻采集、視頻編碼和對編碼后的視頻的處理&#xff0c…

系統的Drawable(四)-LayerListDrawable

系統的Drawable(四)-LayerListDrawable 學習自 https://blog.csdn.net/u014695188/article/details/52815444 LayerListDrawable 漫談 使用layer-list可以將多個drawable按照順序層疊在一起顯示&#xff0c;默認情況下&#xff0c;所有的item中的drawable都會自動根據它附上vie…

圖像處理:鏡頭頻率(衍射極限) 和 相機采樣:顯微鏡的采樣定理

采樣定理大家都知道&#xff0c;相信不用多說。 我自己寫下來給自己看。 下面&#xff0c;我總結 大家平時照相的鏡頭或者顯微鏡的物鏡的情況下&#xff1a; 采樣頻率是指圖像在數字化的時候的過程&#xff0c;實際上就是我們相機感光元件CCD或者CMOS的一個個小像元把模擬的連續…

【練習】使用事務控制語句

1.使用show engines 命令確定系統中是否有任何事務存儲引擎可用以及哪個是默認引擎。 2.使用set autocommit 語句啟用autocommit。 3.為使用world數據庫做準備&#xff0c;確認city表使用事務存儲引擎innodb。 4.使用start transaction 語句顯式啟動新事務。 5.刪除一行。 6.使…

老男孩Day1作業(一):編寫登錄接口

要求&#xff1a;編寫登錄接口 1. 輸入用戶名和密碼 2. 認證成功后顯示歡迎信息 3. 輸錯三次后鎖定 1&#xff09;編寫思路 編寫思路參考下面GitHub鏈接中的流程圖 https://github.com/ChuixinZeng/PythonStudyCode/blob/master/PythonCode-OldBoy/Day1/作業/Day1_作業_登錄接口…

hashcat源碼分析1

typedef struct hash{void *digest;salt_t *salt;void *esalt;void *hook_salt; // additional salt info only used by the hook (host)int cracked;hashinfo_t *hash_info;char *pw_buf;int pw_len;} hash_t;一.1. 信號 函數&a…

Davinci及U-boot的一些介紹

TI推出的數字多媒體平臺DM系列&#xff0c;集成了ARM與DSP雙核處理器&#xff1a;DSP處理器運行DSP/BIOS操作系統&#xff0c;負責音視頻編解碼算法以及其他圖形處理算法&#xff1b;ARM處理器運行MontaVista Linux操作系統&#xff0c;負責設備初始化、用戶圖形界面管理。ARM處…

像素越多越好?像元的面積越小越好?為何底大一級壓死人?

像素越多越好&#xff1f;像素點的面積越小越好&#xff1f;為何底大一級壓死人&#xff1f; 像素是&#xff1a;圖像最小單元的數量&#xff0c;例如6000*4000&#xff0c;像素數量就是24*10^6。 像素太少當然圖像就看不見了&#xff0c;看不清晰了。 但是現在幾乎所有手機和相…

設計模式(5)--工廠模式

//5.工廠模式 //ver1 //回顧簡單工廠模式 class OperationFactory { public:static Operation createOperation(char chOper){Operation * op NULL;switch(chOper){case :op new OperationAdd();break;case -:op new OperationSub();break;default:break;}return *op;} };vo…

對于多屬性類型系統的數據庫設計

主要是以下幾類系統: 生活信息系統, 內容:小, 屬性:大,電商商品系統, 內容:大, 屬性:大,風控征信系統, 內容:小, 屬性:大,新聞系統, 內容:大, 屬性:小,這些系統共同的特點, 都是在主體內容上會攜帶多個屬性, 并且屬性需要隨時能調整, 并且要求能兼容舊屬性, 還需要頻繁的通過屬…

linux環境部署常用命令

1.  查看當前所屬目錄&#xff1a;pwd2.  回到上級目錄&#xff1a;cd ../回到上兩級目錄&#xff1a;cd ../ ../3.  查看當前目錄下有哪些文件&#xff1a;ls4.  查看最后100行日志&#xff1a;tail -100 catalina.out動態重看操作日志&#xff1a;tail -f catalina.o…

DM6446開發攻略:V4L2視頻驅動和應用分析

針對DAVINCI DM6446平臺&#xff0c;網絡上也有很多網友寫了V4L2的驅動&#xff0c;但只是解析Montavistalinux-2.6.10 V4L2的原理、結構和函數&#xff0c;深度不夠。本文決定把Montavista 的Linux-2.6.18 V4L2好好分析一下&#xff0c;順便講解在產品中的應用&#xff0c;滿足…

相機像素尺寸(像元大小)和成像系統分辨率之間的關系

相機像素尺寸&#xff08;像元大小&#xff09;和成像系統分辨率之間的關系 在顯微成像系統中&#xff0c;常常會用分辨率來評價其成像能力的好壞。這里的分辨率通常是指光學系統的極限分辨率以及成像探測器的圖像分辨率。最終圖像所呈現出的實際分辨率&#xff0c;取決于二者的…