首页 > 其他分享 >扫地机器人 二分答案,贪心 蓝桥杯

扫地机器人 二分答案,贪心 蓝桥杯

时间:2024-03-26 22:04:36浏览次数:22  
标签:二分 int mid 蓝桥 查找 答案 check 贪心

二分答案 与二分查找类似,二分查找有一个前提就是数列要求是有序的,二分答案则是要求 满足条件的答案是单调有序的,它的基本思想是在答案可能的范围 ([L,R]) 内二分查找答案,不断检查当前答案是否满足题目的要求,根据检查结果更新查找的区间,最终取得最符合题目要求的答案进行输出。

模板:

ans和left一起是最大值

ans和right一起是最小值

这个mid相当于答案,用check函数去检查他是否可行

例题:

一个程序10的8次方是运行一秒,二分还有sort(快速排序)都是nlog(n)

对于包含大量重复元素的数组,快速排序的时间复杂度会退化至 O(N2)

、#include<bits/stdc++.h>
using namespace std;
int i,n,a[100009],k,ans=0;
bool check(int mid){
  int pos=0,t;//pos前面清扫过的位置
  for(i=0;i<k;i++)
  {  //已经清扫的位置还没到当前机器人的位置a[i]
  //一个位置机器人是要去回,一个格子消耗两个时间 
         t=mid;//贪心,每个机器人都花费这些时间 
    if(pos<a[i]) t=t-(a[i]-pos-1)*2;//当前机器人前面清扫掉
    if(t<0) return false;//不能返回到出发格 
    int qs=t/2;//剩下的t能清扫的 
    pos=a[i]+qs; 
  }
  if(pos<n) return false;
  return true;  }
int main(){
   cin>>n>>k;
   for(i=0;i<k;i++)
   cin>>a[i];
   sort(a,a+k);//mid就是机器人清扫花费的时间 ,贪心算,这个机器人扫这些的同时
//其他机器能否花小于等于他的时间,然后所有的地也被清洁完 ,check的时候按所有机器都清扫mid算 
   //check时 是从头算,是否清洁完在这个走廊 
   int left=0,right=n*2,mid;
   while(left<=right){
    mid=(right+left)/2;
    if(check(mid)){
      ans=mid;
    right=mid-1;//当前mid可以,然后要去寻找更加符合的,就是更小的 
     }
     else
     left=mid+1;
   }
   cout<<ans;
return 0;
 }

标签:二分,int,mid,蓝桥,查找,答案,check,贪心
From: https://blog.csdn.net/m0_61991146/article/details/137059169

相关文章

  • LeetCode 11.盛最多的水(双指针,贪心)
    题目:思路:我们可以安排俩个指针(数组下标)放在数组的头部和尾部;每次移动高度较低的下标,判断是否为最大水量并记录;(水量=下标差乘较小高度)证明可行性:如果移动高度较高的下标,由于下标差减小,故不论后面下标对应的高度增大,不变或减小都会导致水量减小;(增大:下标差减小,较小高度......
  • 蓝桥杯 试题 基础练习 十进制转十六进制 C++
    问题描述十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制......
  • 【蓝桥杯省赛真题33】python单词排序 中小学青少年组蓝桥杯比赛 算法思维python编程省
     目录python单词排序一、题目要求1、编程实现2、输入输出二、算法分析三、程序编写四、程序说明五、运行结果六、考点分析七、 推荐资料1、蓝桥杯比赛2、考级资料3、其它资料python单词排序第十三届蓝桥杯青少年组python比赛省赛真题一、题目要求(注:input......
  • 灵茶之二分01
    灵茶之二分01链接Problem-166C-Codeforces题目大意输入n(1≤n≤500)x(1≤x≤\(10^5\))和长为n的数组a(1≤a[i]≤\(10^5\))。向a中添加尽量少的数,使得a的中位数恰好等于x。输出添加的元素个数。注:如果n是偶数,中位数取正中间左边那个。例如a=[1,3,5,7]的......
  • 洛谷 P9237 [蓝桥杯 2023 省 A] 像素放置
    题意:n*m的方格,有的格子是数字,是数字的格子代表了相邻(包括自己)的9个格子内颜色值为1的格子有这么多个。给出这个方格,求满足条件的颜色方格,保证答案唯一。n<=10,m<=10。思路:想不出好办法,直接暴力+剪枝。暴力好说,01dfs即可,关键是如何剪枝。剪枝肯定是已经不会再变动颜色的......
  • [蓝桥杯 2013 国 C] 危险系数 dfs 深搜 递归
    ##题目背景抗日战争时期,冀中平原的地道战曾发挥重要作用。##题目描述地道的多个站点间有通道连接,形成了庞大的网络。但也有隐患,当敌人发现了某个站点后,其它站点间可能因此会失去联系。我们来定义一个危险系数$DF(x,y)$:对于两个站点$x$和$y(x\neqy),$如果能找到一......
  • 二分查找算法
    二分查找算法思想1、数组要求是有序的2、定义左右边界索引l、r,中间索引m=(l+r)/23、判断arr[m]与待查找值target的大小,不断减少右边界索引r或者增加左边界索引l 基础版二分查找(1)如果target<arr[m],则证明待查找值在中间索引左侧,减少右索引r=m-1,继续下一轮查找(2)如果如果targ......
  • 灵茶之贪心模拟01
    灵茶之贪心模拟01题目链接https://codeforces.com/problemset/problem/1443/B题目大意输入T(≤\(10^5\))表示T组数据。所有数据的字符串长度之和≤\(10^5\)。每组数据输入a(1≤a≤1000)b(1≤b≤1000)和长度不超过\(10^5\)的01字符串。你可以花费a,把一段连续的......
  • 2.27 二分图与网络流复习
    可能会有一些有一点用的trick的整理与复习。很少,很不系统。1Dinic优化给bfs和dfs加上当前弧优化。但是此时要一定注意在遍历时,\(rest=0\)退出循环需要在循环内写,而非在for中的条件写。对边权排序后分段。Dinic很多时候慢是因为边权差距太大了。于是我们不断设......
  • 迷宫与陷阱(蓝桥杯)
    文章目录迷宫与陷阱问题描述bfs迷宫与陷阱问题描述小明在玩一款迷宫游戏,在游戏中他要控制自己的角色离开一间由NxN个格子组成的2D迷宫。小明的起始位置在左上角,他需要到达右下角的格子才能离开迷宫,每一步,他可以移动到上下左右相邻的格子中。迷宫中有些格子小......