题意:m个人要去移动n堆盒子 每堆上有若干个盒子 每个人只能进行两种操作 从一个位置走到下一个位置 如果这个位置上的盒子个数不为0 那么就要把这个位置上的盒子移掉 每种操作需要一秒 求这m个人 把盒子全都清掉所花的最少时间 ;
#include #include #include #include #include #include #include #include
思路:本题的做法非常奇妙,1.先二分枚举可能的时间,然后再判断在该时间内能否搬走所有的箱子;
2.判断时,先假想有一个人一直往右走,然后再逐个加人。
3.如果t>mid的话,那么mid-t>0无论怎样搬都是不可实现的,如果t<mid的话,mid-t>0那么只要人数足够多,都能对在t位置