想法:由於要有最少的扇形來覆蓋所有的點,點有哪麼多,肯定是貪心演算法,想到乙個在一條直線上的很多點,要用最少區間去覆蓋所有點,這個是貪心,只需要從最左邊第乙個點開始覆蓋即可。 但這個題是平面上的,如何貪心? 這裡想到由於必要有個扇形覆蓋的起點,不可能每個都列舉,那個更可能??
我的想法是:找到任意兩個點間最大的間隔角度,起點從其中乙個開始,就轉換成直線上區間覆蓋點的問題了。
**:
#include#includeview code#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}}
最少攔截系統(貪心)
description 某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統.但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能超過前一發的高度.某天,雷達捕捉到敵國的飛彈來襲.由於該系統還在試用階段,所以只有一套系統,因此有可能不能攔截所有的飛彈.怎麼辦呢...
最少攔截系統(貪心)
g 最少攔截系統 time limit 1000ms memory limit 32768kb 64bit io format i64d i64u submit status description 某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統.但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮...
最少攔截系統(貪心)
這題是可以用dp做的,但是在這篇,我只講一下貪心的做法。為什麼我不說說動態規劃做法呢?感覺麻煩。好吧,其實是我現在還不會。某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統.但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能超過前一發的高度.某天,雷達捕捉...