CF 551c 二分搜尋 思維題

2021-08-01 09:04:49 字數 950 閱讀 4796

題意:m個人要去移動n堆盒子  每堆上有若干個盒子  每個人只能進行兩種操作 從乙個位置走到下乙個位置  如果這個位置上的盒子個數不為0  那麼就要把這個位置上的盒子移掉  每種操作需要一秒

求這m個人 把盒子全都清掉所花的最少時間 ;

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

using namespace std;

#define mm(a) memset(a,0,sizeof(a))

typedef long long ll;

typedef unsigned long long ull;

const int mod = 1000000007;

const double eps = 1e-10;

const int inf = 0x3f3f3f3f;

const int big=50000;

ll max(int a,int b) ;

ll min(int a,int b)

}return true;

}int main()

ll l=-1,r=s+t;//二分搜尋 左開右閉區間

while(r-l>1)

printf("%lld\n",r);

}return 0;

}

思路:本題的做法非常奇妙,1.先二分列舉可能的時間,然後再判斷在該時間內能否搬走所有的箱子;

2.判斷時,先假想有乙個人一直往右走,然後再逐個加人。

3.如果t>mid的話,那麼mid-t>0無論怎樣搬都是不可實現的,如果t0那麼只要人數足夠多,都能對在t位置

的箱子造成減少。

數列問題 二分 思維 好題

description 有兩個數列a,b,求有多少個區間 l,r 使得ma xri lai minr i lb i input 第一行為乙個整數 n.第二行有 n 個整數,表示 a 1 a n 第三行有 n 個整數,表示 b 1 b n output 輸出乙個整數,表示滿足條件的區間數 sample...

列車排程(思維題,二分查詢)

7 2 列車排程 25 分 火車站的列車排程鐵軌的結構如下圖所示。兩端分別是一條入口 entrance 軌道和一條出口 exit 軌道,它們之間有n條平行的軌道。每趟列車從入口可以選擇任意一條軌道進入,最後從出口離開。在圖中有9趟列車,在入口處按照的順序排隊等待進入。如果要求它們必須按序號遞減的順序...

刷題 二分搜尋 (1)

模板 找出最左邊的乙個,最右邊的乙個,和長度 注意找左位置時要判斷 1 不可以是字串結尾,不然為0或為空 2 不可以不等於key include include include using namespace std intn,m const int n 100003 int d n intmain...