2017 10 4 國慶清北 D4T2 正方形

2022-05-03 13:51:16 字數 1777 閱讀 9242

在乙個10000*10000的二維平面上,有n顆糖果。

lyk喜歡吃糖果!並且它給自己立了規定,一定要吃其中的至少c顆糖果!

事與願違,lyk只被允許圈出乙個正方形,它只能吃在正方形裡面的糖果。並且它需要支付正方形邊長的價錢。

lyk為了滿足自己的求食慾,它不得不花錢來圈乙個正方形,但它想花的錢盡可能少,你能幫幫它嗎?

輸入格式:

第一行兩個數c和n。

接下來n行,每行兩個數xi,yi表示糖果的座標。

輸出格式:

乙個數表示答案。

輸入樣例#1:

3 4

1 22 1

4 15 2

輸出樣例#1:

4樣例解釋選擇左上角在(1,1),右下角在(4,4)的正方形,邊長為4。
對於30%的資料n<=10。

對於50%的資料n<=50。

對於80%的資料n<=300。

對於100%的資料n<=1000。1<=xi,yi<=10000。

1/*2

如果邊長為x可行,邊長x+1也一定能覆蓋至少c個糖果

3假如x不可行,邊長為x-1是不可能覆蓋c個糖果的。 ——> 二分答案。

4l=1,r=10000, 判斷mid是否可行, 可行-> 答案在[l,mid] ,不可行 -> (mid,r]

5while (l<=r)

6二分完答案後,怎麼判定。

7↓↓↓↓↓↓↓↓↓↓↓

8列舉上邊在**。

9下邊的位置是固定的。

10哪些糖果被夾在這段區間中。 o(n)

1112

左邊為1的情況下,右邊是什麼

13隨著左邊向右移動,右邊也一定向右移動。

14左邊至多移動n次,右邊也至多移動n次,總共2n次。 o(n)

15*/

1617 #include18 #include19 #include20 #include21 #include22

using

namespace

std;

2324

int c,n,l,r,mid,temp[1005

];25

struct

candy

2632 }candy[1005

];33

34bool judge(int l,int r) //

上下長

3544

return

false;45

}464748

bool check(int x) //

左右長

4958}59

if(judge(l,n)) return

true; //

單獨判斷n為右邊界的時候是否可行,因為r==n時沒法在上面的for迴圈中寫

60return

false;61

}6263int

main()

6470 sort(candy+1,candy+n+1

);71 l=1,r=10000;72

while(l<=r) //

二分乙個邊長

7378 printf("

%d",l+1

);79

return0;

80 }

view code

2016國慶清北Day2T1

pa 題目描述 漢諾塔公升級了 現在我們有n個圓盤和n個柱子,每個圓盤大小都不一樣,大的圓盤不能放在小的圓盤上面,n個柱子從左到右排成一排。每次你可以將一 個柱子上的最上面的圓盤移動到右邊或者左邊的柱子上 如果移動之後是合法的 話 現在告訴你初始時的狀態,你希望用最少的步數將第i 大的盤子移動到第i...

2017 10 7 國慶清北 D7T2 第k大區間

定義乙個長度為奇數的區間的值為其所包含的的元素的中位數。現給出n個數,求將所有長度為奇數的區間的值排序後,第k大的值為多少。輸入格式 輸入檔名為kth.in。第一行兩個數n和k 第二行,n個數。0 每個數 2 31 輸出格式 乙個數表示答案 輸入樣例 1 4 3 3 1 2 4 樣例解釋 l,r 表...

2017 10 3 國慶清北 D3T3 解迷遊戲

lyk進了一家古董店,它很想買其中的一幅畫。但它帶的錢不夠買這幅畫。幸運的是,老闆正在研究乙個問題,他表示如果lyk能幫他解出這個問題的話,就把這幅畫送給它。老闆有乙個n m的矩陣,他想找乙個和最大的子矩陣,這個子矩陣可以由四個引數x,y,x2,y2 1 x x2 n,1 y y2 m 來表示,表示...