NOIP學習之二分查詢 120 矩形分割

2021-10-03 15:50:57 字數 1334 閱讀 3860

測試鏈結

總時間限制: 1000ms 記憶體限制: 65536kb

描述

平面上有乙個大矩形,其左下角座標(0,0),右上角座標(r,r)。大矩形內部包含一些小矩形,小矩形都平行於座標軸且互不重疊。所有矩形的頂點都是整點。要求畫一根平行於y軸的直線x=k(k是整數) ,使得這些小矩形落在直線左邊的面積必須大於等於落在右邊的面積,且兩邊面積之差最小。並且,要使得大矩形在直線左邊的的面積盡可能大。注意:若直線穿過乙個小矩形,將會把它切成兩個部分,分屬左右兩側。

輸入

第一行是整數r,表示大矩形的右上角座標是(r,r) (1 <= r <= 1,000,000)。

接下來的一行是整數n,表示一共有n個小矩形(0 < n <= 10000)。

再接下來有n 行。每行有4個整數,l,t, w 和 h, 表示有乙個小矩形的左上角座標是(l,t),寬度是w,高度是h (0<=l,t <= r, 0 < w,h <= r). 小矩形不會有位於大矩形之外的部分。

輸出

輸出整數n,表示答案應該是直線 x=n。 如果必要的話,x=r也可以是答案。

樣例輸入

1000

21 1 2 1

5 1 2 1

樣例輸出

5

#include

#define ll long long

using

namespace std;

long

long

square

(int);

long

long total,minc=

1000000000000

;int l[

10005

],t[

10005

],w[

10005

],h[

10005

],n;

intmain()

end=r;

while

(end>=start)

else start=mid+1;

}

start=

0,end=r,result=0;

while

(end>=start)

else start=mid+1;

}

cout

}long

long

square

(int k)

return ans;

}

NOIP學習之二分查詢 121 查詢最接近的元素

測試鏈結 總時間限制 1000ms 記憶體限制 65536kb 描述 在乙個非降序列中,查詢與給定值最接近的元素。輸入 第一行包含乙個整數n,為非降序列長度。1 n 100000。第二行包含n個整數,為非降序列各元素。所有元素的大小均在0 1,000,000,000之間。第三行包含乙個整數m,為要詢...

查詢之二分查詢

二分查詢前提查詢的序列需要有序 十分好理解 取中間值與目標值對比查詢 注意下數值邊界 public static void main string args int arr2 int arr3 int index binarysearch arr,34 int index2 binarysearch...

NOIP學習之二分查詢 129 河中跳房子

測試鏈結 總時間限制 1000ms 記憶體限制 65536kb 描述 每年奶牛們都要舉辦各種特殊版本的跳房子比賽,包括在河裡從乙個岩石跳到另乙個岩石。這項激動人心的活動在一條長長的筆直河道中進行,在起點和離起點l遠 1 l 1,000,000,000 的終點處均有乙個岩石。在起點和終點之間,有n 0...