LA 4253 箭術(二分列舉)

2022-06-20 22:18:09 字數 760 閱讀 8367

題意:有n個平行於x軸的線段,每條線段代表乙個靶子。判斷是否可以站在x軸上[0,w]區間內的某個位置射箭。

思路:二分列舉座標點,這道題需要用到atan2函式,它返回乙個角度值,對於每個靶子,利用atan2函式確定能射中靶子的區間,如果靶子之間區間沒有重合部分,說明該座標點不能射中所有靶子。在下面的**中,如果返回1,說明需要向右移,如果返回-1,說明需要向左移。

這道題目還需要注意一點的就是精度問題。

1 #include2 #include3 #include4 #include5

using

namespace

std;67

const

int maxn = 5000 + 5;8

9double

w;10

intn;

1112

struct

node

13a[maxn];

1617

bool

cmp(node a, node b)

1821

22int judge(double

pos)

2337

return0;

38}3940

41int

main()

4264

else

if (ans == 1) l =mid;

65else r =mid;66}

67if(!ok) cout << "no"

<69 }

瘋牛(二分列舉)

描述 農夫 john 建造了一座很長的畜欄,它包括n 2 n 100,000 個隔間,這些小隔間依次編號為x1,xn 0 xi 1,000,000,000 但是,john的c 2 c n 頭牛們並不喜歡這種布局,而且幾頭牛放在乙個隔間裡,他們就要發生爭鬥。為了不讓牛互相傷害。john決定自己給牛分配...

hdu 5265 二分 列舉

解題思路 首先對每個數進行去模,這樣得到的數就會是 0,p 1 的範圍,接下來就是如何組合的問題了。這裡要考慮到模的性質了,假設取的兩個數分別為i,j,其中i j,如果當前數i p 1 2,那麼就會出現兩種情況 1 j p 1 2,這樣算出來的結果必定是i j p,i和j肯定都要盡可能大 2 j p...

HDU 6012 列舉 二分

問題描述 這幾天lotus對培養盆栽很感興趣,於是她想搭建乙個溫室來滿足她的研究慾望。lotus將所有的n n株盆栽都放在新建的溫室裡,所以所有盆栽都處於完全相同的環境中。每一株盆栽都有乙個最佳生長溫度區間 l,r l r 在這個範圍的溫度下生長會生長得最好,但是不一定會提供最佳的研究價值 lotu...