[BZOJ2458][BeiJing2011]最小三角形

題目描述?Description

Xaviera現在遇到了一個有趣的問題。平面上有N個點,Xaviera想找出周長最小的三角形。由于點非常多,分布也非常亂,所以Xaviera想請你來解決這個問題。為了減小問題的難度,這里的三角形也包括共線的三點。

輸入描述?Input Description

第一行包含一個整數N表示點的個數。接下來N行每行有兩個整數,表示這個點的坐標。

輸出描述?Output Description

輸出只有一行,包含一個6位小數,為周長最短的三角形的周長(四舍五入)。

樣例輸入 Sample Input

4

1 1

2 3

3 3

3 4

樣例輸出 Sample Output

3.414214

數據范圍及提示 Data Size & Hint

?

之前的一些廢話:是時候準備會考了。。

題解:做法類似平面上求最近點對。首先把平面劃分成兩個部分,遞歸求出兩個部分的答案為ans,然后,把離分割線距離小于ans/2的點全部加入隊列,因為只有在這范圍內答案才有可能比ans小,加入之后按照y坐標排一遍序,然后滑動窗口維護一下高度為ans/2的一個矩形,然后對矩形內的點暴力選,更新最優解即可。

代碼:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
using namespace std;
typedef long long LL;
#define mem(a,b) memset(a,b,sizeof(a))
typedef pair<double,int> PDI;
const int maxn=200010;
const double oo=2147483647;
inline int read()
{int x=0,f=1;char c=getchar();while(!isdigit(c)){if(c=='-')f=-1;c=getchar();}while(isdigit(c)){x=x*10+c-'0';c=getchar();}return x*f;
}
struct Point
{double x,y;Point() {}Point(double _1,double _2):x(_1),y(_2){}bool operator < (const Point &s)const{if(x==s.x)return y<s.y;return x<s.x;}
}p[maxn];
int n;double x,y;
PDI s[maxn];
double dis(double a,double b,double c,double d){return sqrt((c-a)*(c-a)+(d-b)*(d-b));
}
double triangle_perimeter(double a,double b,double c,double d,double e,double f){return dis(a,b,c,d)+dis(a,b,e,f)+dis(c,d,e,f);
}
bool cmp(PDI a,PDI b){return a.first<b.first;} 
double mdis(int l,int r)
{if(l+1>=r)return oo;if(l+2==r)return triangle_perimeter(p[l].x,p[l].y,p[l+1].x,p[l+1].y,p[r].x,p[r].y);int mid=(l+r)>>1,t=0;double d=min(mdis(l,mid),mdis(mid,r));for(int i=l;i<=r;i++)if(fabs(p[i].x-p[mid].x)<=d/2.0)s[t++]=make_pair(p[i].y,i); sort(s,s+t,cmp);int st=0,ed;while(st<=t-2){ed=st+1;while(fabs(s[ed].first-s[st].first)<=(d/2.0) && ed<=t-2)ed++;for(int i=st+1;i<ed;i++)for(int j=i+1;j<ed;j++)d=min(d,triangle_perimeter(p[s[st].second].x,p[s[st].second].y,p[s[i].second].x,p[s[i].second].y,p[s[j].second].x,p[s[j].second].y)); st++;}return d;
}
int main()
{n=read();for(int i=0;i<n;i++)x=(double)read(),y=(double)read(),p[i]=Point(x,y);sort(p,p+n);printf("%.6lf\n",mdis(0,n-1));return 0;
}
View Code

總結:滑動窗口好難寫。

轉載于:https://www.cnblogs.com/FYH-SSGSS/p/7061175.html

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

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

相關文章

Makefile中的變量

Makefile中的變量 2007-11-03 12:03Makefile中變量有以下幾個特征&#xff1a; 1. Makefile中變量和函數的展開&#xff08;除規則命令行中的變量和函數以外&#xff09;&#xff0c;是在make讀取makefile文件時進行的&#xff0c;這里的變量包括了使用“”定義和使用指示符“d…

小技巧集錦

2019獨角獸企業重金招聘Python工程師標準>>> jackson JsonDeserialize 使用方法&#xff1a; 實現方法注解寫在set方法上。 public class CustomJsonDateDeserializer extends JsonDeserializer<Date> {private SimpleDateFormat datetimeFormat new SimpleD…

interface-C#接口-統一的標準

文章目錄接口的定義接口的實現實例1實例2接口的繼承博主寫作不容易&#xff0c;孩子需要您鼓勵 萬水千山總是情 , 先點個贊行不行 接口是面向對象編程的一個重要技術&#xff0c;在C#中負責實現多重繼承。一個接口定義一個協定&#xff0c;實現接口類或結構體必須遵守其協定…

JMeter入門(1):JMeter總體介紹及組件介紹

一、JMeter概述 JMeter就是一個測試工具&#xff0c;相比于LoadRunner等測試工具&#xff0c;此工具免費&#xff0c;且比較好用&#xff0c;但是前提當然是安裝Java環境&#xff1b;JMeter可以做(1)壓力測試及性能測試&#xff1b;(2)數據庫測試&#xff1b;(3)Java程序的測試…

二層交換機、三層交換機和路由器的基本工作原理和三者之間的主要區別

二層交換機:二層交換技術是發展比較成熟&#xff0c;二層交換機屬數據鏈路層設備&#xff0c;可以識別數據包中的MAC地址信息&#xff0c;根據MAC地址進行轉發&#xff0c;并將這些MAC地址與對應的端口記錄在自己內部的一個地址表中。 具體如下&#xff1a; &#xff08;1&…

Unity3D:視物有點眩暈的原因

設置Main Camera 的 Field of View 為100&#xff0c;看物體總覺得很不舒服。 設置為 60 就正常了。 根本原因&#xff0c;有待于分析 轉載于:https://www.cnblogs.com/makebetter/p/7063694.html

使用jQuery清空file文件域的解決方案

使用jQuery清空file文件域的解決方案 var file $("#file") file.after(file.clone().val("")); file.remove();

更改mysql最大連接數

方法一&#xff1a; 打開cmd&#xff0c;用"mysql -u root -p;"命令進入mysql, 輸入命令&#xff1a;show variables like "max_connections" 顯示最大連接數 更改最大連接數 : set global max_connections 5000 方法二&#xff1a; 在my.ini加上 max_co…

根據HTML5 獲取當前位置的經緯度【百度地圖】【高德地圖】

是想讓地圖的定位用戶位置更準確一些。 查看了介紹&#xff1a; http://www.w3school.com.cn/html5/html_5_geolocation.asp 看介紹中拿數據挺簡單。 <!DOCTYPE html> <html> <body> <p id"demo">點擊這個按鈕&#xff0c;獲得您的坐標&…

C#抽象類與密封類-abstract-sealed

文章目錄抽象類和抽象方法實現抽象方法接口、類和抽象類密封類博主寫作不容易&#xff0c;孩子需要您鼓勵 萬水千山總是情 , 先點個贊行不行 如果說繼承是面向對象設計理論的基石&#xff0c;那么抽象理論和方法就是繼承理論的頂梁柱。 抽象類和抽象方法 簡單的說&#x…

vs2010快捷鍵

Ctrl M O: 折疊所有方法 Ctrl M M: 折疊或者展開當前方法 Ctrl M L: 展開所有方法 1、強迫智能感知&#xff1a;CtrlJ&#xff1b;2、強迫智能感知顯示參數信息&#xff1a;Ctrl-Shift-空格&#xff1b;3、格式化整個塊&#xff1a;CtrlKF4、檢查括號匹配(在左右括號間切…

startup畢業論文

今天起得相對比較晚&#xff0c;為的是一個沒有目的面試&#xff0c;去了的結果。只是打擊一下自己的自信心&#xff0c;走的時候&#xff0c;面試官冷冷的說了一句&#xff0c;你的面試到此結束&#xff0c;是的&#xff0c;我并沒有很傷心&#xff0c;在門外等面試的時候&…

Javascript實現信息滾動效果的方法

<html><head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><title>向上無縫滾動</title><style>body { font-size: 12px; line-height: 24px; text-algin: center; /* 頁面內容居中 */}* { ma…

C# delegate與event,委托與事件

文章目錄委托示例事件實例博主寫作不容易&#xff0c;孩子需要您鼓勵 萬水千山總是情 , 先點個贊行不行 委托和事件是C#中兩個比較復雜的概念&#xff0c;這篇文章介紹兩個概念與基本用法&#xff0c;讓大家理解C#中的事件處理機制。 委托 委托也叫代理&#xff0c;就是把…

路由器與交換機的工作原理

路由器與交換機的工作原理 計算機網絡往往由許多種不同類型的網絡互連連接而成。如果幾個計算機網絡只是在物理上連接在一起&#xff0c;它們之間并不能進行通信&#xff0c;那么這種“互連”并沒有什么實際意義。因此通常在談到“互連”時&#xff0c;就已經暗示這些相互連接的…

Java的四種引用,強弱軟虛,用到的場景(轉+補充)

Q1&#xff1a;引用隊列是什么&#xff1f;如何使用&#xff1f;使用的場景有哪些&#xff1f; A1:oracle的api文檔的描述&#xff1a; https://docs.oracle.com/javase/7/docs/api/java/lang/ref/ReferenceQueue.htmlReference queues, to which registered reference objects…

C# lambda表達式與匿名方法

文章目錄匿名方法Lambda表達式實例實例博主寫作不容易&#xff0c;孩子需要您鼓勵 萬水千山總是情 , 先點個贊行不行 C#中的匿名方法是在C#2.0引入的&#xff0c;它終結了聲明委托的唯一方法是使用命名方法的時代。在C#更高版本中&#xff0c;Lambda表達式取代了匿名方法&a…

LINUx打包命令匯總

.tar 解包&#xff1a;tar xvf FileName.tar 打包&#xff1a;tar cvf FileName.tar DirName &#xff08;注&#xff1a;tar是打包&#xff0c;不是壓縮&#xff01;&#xff09; ——————————————— .gz 解壓1&#xff1a;gunzip FileName.gz 解壓2&#xff1a;…

常用的相似度計算

在數據分析和數據挖掘的過程中&#xff0c;我們經常需要知道個體間差異的大小&#xff0c;進而評價個體的相似性和類別。最常見的是數據分析中的相關分析&#xff0c;數據挖掘中的分 類和聚類算法&#xff0c;如K最近鄰&#xff08;KNN&#xff09;和K均值&#xff08;K-Means&…

玩轉C#窗體-屬性、方法和事件詳細說明

文章目錄簡介Windows窗體的基本屬性一、布局屬性1、StartPosition屬性2、Location屬性3、尺寸屬性4、WindowsState屬性5、Autoscroll屬性6、AutoSize屬性二、樣式屬性1、ControlBox屬性2、MaximizeBox屬性3、MinimizeBox屬性4、HelpButton屬性5、ShowIcon屬性6、Icon屬性7、Sho…