51NOD 1243 排船問題 二分

2021-08-29 16:36:23 字數 2618 閱讀 3581

51nod1243排船問題

題意

一 個碼

頭中有n

艘船和n

個木樁,

船的長度

為2∗x

,碼頭的

寬度為m

乙個碼頭中有n艘船和n個木樁,船的長度為2*x,碼頭的寬度為m

乙個碼頭中有

n艘船和

n個木樁

,船的長

度為2∗

x,碼頭

的寬度為mn個

木樁的位

置(相對

碼頭左岸

的位置)

會在資料

中給

出n個木樁的位置(相對碼頭左岸的位置)會在資料中給出

n個木樁的位

置(相對

碼頭左岸

的位置)

會在資料

中給出船和船

之間不能

重疊,即

每艘船的

船頭不能

超過上一

艘船的船

尾,當然

也不能超

出碼頭的

兩岸

船和船之間不能重疊,即每艘船的船頭不能超過上一艘船的船尾,當然也不能超出碼頭的兩岸

船和船之間不

能重疊,

即每艘船

的船頭不

能超過上

一艘船的

船尾,當

然也不能

超出碼頭

的兩岸船和木

樁之間用

繩子連線

,並且1

個木樁只

能栓1條

船,繩子

的一頭拴

在木樁上

,另一頭

拴在船的

中間

船和木樁之間用繩子連線,並且1個木樁只能栓1條船,繩子的一頭拴在木樁上,另一頭拴在船的中間

船和木樁之間

用繩子連

接,並且

1個木樁

只能栓1

條船,繩

子的一頭

拴在木樁

上,另一

頭拴在船

的中間而船中

間到木樁

的距離,

就是所需

的繩子的

長度。由

你根據給

出的條件

,排列船

的位

置而船中間到木樁的距離,就是所需的繩子的長度。由你根據給出的條件,排列船的位置

而船中間到木

樁的距離

,就是所

需的繩子

的長度。

由你根據

給出的條

件,排列

船的位置

使 得所

用到的最

長的繩子

最短。輸

出這個最

短的長度

,如果碼

頭排不下

所有船則

輸出−1

。使得所用到的最長的繩子最短。輸出這個最短的長度,如果碼頭排不下所有船則輸出-1。

使得所用到的

最長的繩

子最短。

輸出這個

最短的長

度,如果

碼頭排不

下所有船

則輸出−

1。做法

我 們發

現答案肯

定是具有

二分性質

的,所以

我們只要

二分答案

驗證即可

我們發現答案肯定是具有二分性質的,所以我們只要二分答案驗證即可

我們發現答案

肯定是具

有二分性

質的,所

以我們只

要二分答

案驗證即可驗證

答案是否

可行的時

候,盡量

把船靠的

最近,看

最後乙個

船是否超

過右邊界

即可

驗證答案是否可行的時候,盡量把船靠的最近,看最後乙個船是否超過右邊界即可

驗證答案是否

可行的時

候,盡量

把船靠的

最近,看

最後乙個

船是否超

過右邊界

即可**

#include

#include

#include

using

namespace std;

#define dbg(x) cout<<#x<<" = "int maxn =

5e4+10;

int a[maxn]

;int n,x,m;

bool

check

(int mid)

else

}else

}return tail<=m;

}int

main()

if(l==m||

2*n*x>m)

printf

("-1\n");

else

printf

("%d\n"

,l);

return0;

}

51nod 1243 排船的問題

1243 排船的問題 codility 基準時間限制 1 秒 空間限制 131072 kb 分值 40 難度 4級演算法題 乙個碼頭中有n艘船和n個木樁,船的長度為2 x,碼頭的寬度為m,n個木樁的位置 相對碼頭左岸的位置 會在資料中給出。船和船之間不能重疊,即每艘船的船頭不能超過上一艘船的船尾,當...

51nod 1243 排船的問題

1243 排船的問題 codility 基準時間限制 1 秒 空間限制 131072 kb 分值 40 難度 4級演算法題 乙個碼頭中有n艘船和n個木樁,船的長度為2 x,碼頭的寬度為m,n個木樁的位置 相對碼頭左岸的位置 會在資料中給出。船和船之間不能重疊,即每艘船的船頭不能超過上一艘船的船尾,當...

51nod 1243 排船的問題 鍛鍊思維的好題

乙個碼頭中有n艘船和n個木樁,船的長度為2 x,碼頭的寬度為m,n個木樁的位置 相對碼頭左岸的位置 會在資料中給出。船和船之間不能重疊,即每艘船的船頭不能超過上一艘船的船尾,當然也不能超出碼頭的兩岸。船和木樁之間用繩子連線,並且1個木樁只能栓1條船,繩子的一頭拴在木樁上,另一頭拴在船的中間。而船中間...