最少的扇形區域 貪心

2022-08-09 07:57:09 字數 1022 閱讀 5232

想法:由於要有最少的扇形來覆蓋所有的點,點有哪麼多,肯定是貪心演算法,想到乙個在一條直線上的很多點,要用最少區間去覆蓋所有點,這個是貪心,只需要從最左邊第乙個點開始覆蓋即可。 但這個題是平面上的,如何貪心?    這裡想到由於必要有個扇形覆蓋的起點,不可能每個都列舉,那個更可能??

我的想法是:找到任意兩個點間最大的間隔角度,起點從其中乙個開始,就轉換成直線上區間覆蓋點的問題了。

**:

#include#include

#include

#include

#include

using

namespace

std;

const

double eps = 1e-10

;const

double pi = acos(-1

);const

int maxn = 1e5 + 10

;int dcmp(double

x)struct

jijiao

bool

operator == (const jijiao& rhs) const

}jiao[maxn];

intmain()

}sort(jiao,jiao+n);

n = unique(jiao,jiao+n) -jiao;

int s = 0

;

double val = jiao[0].rad+2*pi-jiao[n-1

].rad;

for(int i=1; i)

}for(int i=0; i)

sort(jiao,jiao+n);

int ans = 0

;

double

cur;

for(int i=0; i)

if(j == n) break

; i = j-1

; }

cout}}

view code

最少攔截系統(貪心)

description 某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統.但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能超過前一發的高度.某天,雷達捕捉到敵國的飛彈來襲.由於該系統還在試用階段,所以只有一套系統,因此有可能不能攔截所有的飛彈.怎麼辦呢...

最少攔截系統(貪心)

g 最少攔截系統 time limit 1000ms memory limit 32768kb 64bit io format i64d i64u submit status description 某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統.但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮...

最少攔截系統(貪心)

這題是可以用dp做的,但是在這篇,我只講一下貪心的做法。為什麼我不說說動態規劃做法呢?感覺麻煩。好吧,其實是我現在還不會。某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統.但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能超過前一發的高度.某天,雷達捕捉...