題意:m個人要去移動n堆盒子 每堆上有若干個盒子 每個人只能進行兩種操作 從乙個位置走到下乙個位置 如果這個位置上的盒子個數不為0 那麼就要把這個位置上的盒子移掉 每種操作需要一秒
求這m個人 把盒子全都清掉所花的最少時間 ;
#include思路:本題的做法非常奇妙,1.先二分列舉可能的時間,然後再判斷在該時間內能否搬走所有的箱子;#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;
}
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...