Think:
1知识点:二分查找+前缀和
2题意:n个石子,m次发呆,每次发呆若手中石子足够掉落石子大于k,询问将所有石子拾到手中所需要的时间
3反思:多理解,多反思,多思考

vjudge题目链接

以下为Accepted代码

#include <cstdio>
#include <cstring>
#include <algorithm>using namespace std;typedef long long LL;LL sum[101400], tmp[101400];int Bin_pos(int l, int r, int x);/*二分查找小于x的第一个数的位置,区间[l, r]越界则返回0*/int main(){int n, m, k, x, i, pos, ans;while(~scanf("%d %d %d", &n, &m, &k)){scanf("%lld", &sum[1]);for(i = 2; i <= n; i++){scanf("%d", &x);sum[i] = sum[i-1] + x;/*记录前缀和*/}for(i = 1; i <= m; i++)scanf("%lld", &tmp[i]);ans = 0, pos = 0;for(i = 1; i <= m; i++){if(tmp[i]-ans > n-pos){/*判断下一次发呆前是否可以拾到全部石子*/ans += n-pos;pos = n;break;}else {int t = tmp[i]-1-ans;/*本次发呆前可以向前移动拾到的石子数量*/pos += t;/*向前移动t单位*/ans += t;/*时间经过t单位*/ans += 1;/*发呆的单位时间*/pos = Bin_pos(1, pos, sum[pos]-k);/*二分查找发呆后回到的位置*/}/*printf("%d %d\n", ans, pos);*/}if(pos < n)/*所有发呆结束但尚未拾到所有石子*/ans += n-pos;printf("%d\n", ans);}return 0;
}
int Bin_pos(int l, int r, int x){int mid;while(l <= r){mid = (l+r)/2;if(sum[mid] >= x)r = mid-1;elsel = mid+1;}return max(0, l-1);
}

I - The old Padawan Gym - 100285I——二分查找相关推荐

  1. 算法图解/二分查找/简单查找/选择排序/递归算法/快速排序算法/

    大 O 表示法 大 O 表示法在讨论运行时间时,log 指的都是 log2 大 O 表示法指出了算法有多快,让你能够比较操作数,它指出了算法运行时间的增速,而并非以秒为单位的速度. 大 O 表示法指出 ...

  2. LeetCode简单题之二分查找

    题目 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1. 示例 1: 输入: n ...

  3. 二分查找模板全面总结

    二分查找 二分法的引入 情形1 1.X的平方根 2.搜索旋转排序数组 情形2 1.第一个错误的版本 2.寻找峰值 3.寻找旋转排序数组中的最小值 情形3 在排序数组中查找第一个和最后一个位置 当遇到查 ...

  4. 数据结构与算法(8-2)有序表查找(折半查找(二分查找)、插值查找)

    目录 一.折半查找(二分查找) 二.插值查找 总代码 一.折半查找(二分查找) 原理:一次次折半,不断向着查找值的位置靠近 . 适用场景:有序(必须) 流程:开始时,min标志首,max标志尾,med ...

  5. 二分查找算法的一点改进

    在计算机科学中,二分查找,是一种在有序数组中查找某一特定元素的搜索算法.这种搜索算法每一次比较都使搜索范围减半.第一篇二分查找的论文发表于1946年,然而第一个没有bug的二分查找算法却是在1962年 ...

  6. 二分法:二分查找(递归+非递归)实现

    二分查找又称折半查找,首先,假设表中元素是按升序排列,将 表中间位置的关键字与查找关键字比较: 如果两者相等,则查找成功; 否则利用中间位置将表分成前.后两个子表: 1)如果中间位置的关键字大于查找关 ...

  7. python数据结构与算法:二分查找

    二分查找:python 实现 def binary_seaech(alist,item):"""二分查找 递归实现"""n = len(al ...

  8. 【C++】C++11 STL算法(四):二分查找法(Binary search operations)、合并操作

    目录 一.lower_bound 1.原型: 2.说明: 3.官方demo 二.upper_bound 1.原型: 2.说明: 3.官方demo 三.binary_search 1.原型: 2.说明: ...

  9. 二分查找的循环实现和递归实现

    自己实现了二分查找的循环实现和递归实现 说明:二分查找适用于顺序存储结构,不适于链式存储结构,是一个高效的查找方法.虽然折半查找效率高,但是要排序,排序本身是一种很费时的运算.     要求传入的表是 ...

最新文章

  1. 使用rsync同步linux服务器上的文件到windows上
  2. Axure RP 第一部分
  3. mysql创建表时显示错误_MYSQL创建表出现错误 ERROR Code 1118如何解决
  4. 秒杀系统优化方案(下)吐血整理
  5. linux进程增删改查,iptables的增删改查
  6. java怎么新建模块_spring boot添加新模块的方法教程
  7. 湖北随州:借大数据“慧眼”织密扶贫监督网
  8. LaTex 常用语法
  9. spring学习之spring框架介绍
  10. MATLAB的WFDB软件下载及使用
  11. UVALive 3959 Rectangular Polygons (排序贪心)
  12. 2019最新中级Android面试题目,有着几篇就够了,Android开发五年
  13. 易基因|干货:手把手教你做RNA m5C甲基化测序分析(RNA-BS)
  14. python图表_使用Python绘制图表大全总结
  15. 方舟无限琥珀服务器,方舟生存进化无限琥珀版
  16. 边坡裂缝拉绳位移计的原理及怎样进行长期健康监测
  17. ResNet网络的改进版:ResNeXt
  18. 依据银行卡号获取银行信息Java代码
  19. xshell查询日志命令_Xshell查看服务器日志
  20. iOS - AVPlayer播放视频,获取视频尺寸(宽高)

热门文章

  1. python实现“幻影坦克”效果(点开图片是隐藏的另一张图)【详解】
  2. 电商项目day11(商品搜索功能实现排序结果分页)
  3. 财路网每日原创推送:用市值来评估加密货币是毫无意义的
  4. 网站优化长尾关键字词库的挖掘与整理
  5. [交换生申请之后](http://simplemind.info/blog/?p=413)
  6. 1.js变量、作⽤域和引⽤类型,js制作页。
  7. 现代黄河三角洲的冲淤分区及地层特征
  8. 怎么去阅读文献-转自小木虫
  9. 抓取报表ALV GRID上的数据 转于elliott
  10. 【五六七人口普查】我国区县级人口基本情况