秒速五厘米(快速二分跳跃查找答案)

**秒速五厘米(快速二分跳跃查找答案)
让我们来看这道题(题目来源:吉首大学)

#问题 D: 秒速五厘米
描述
樱花飘落的速度,每秒五厘米。
动漫《秒速五厘米》中,明里曾在信中写道“我家附近有棵很大的樱花树,到了春天,
那棵树上的花瓣,大概也会以每秒五公分的速度飘落,而我则在想,要是能和贵树一
起迎接春天的来临该有多好啊。”
来年春天,他们没能像约定那样一起迎接春天的到来,看樱花飘落。但有一个魔法,
可以让他们有m秒的时间一起看樱花飘落,樱花树上有n朵樱花,每朵樱花都有一个高度a[i],
樱花飘落的速度为v,樱花只能一朵一朵的飘落,如果某朵樱花飘落的时间不是整数,
则那朵樱花飘落所需的时间要向上取整,即,若两朵樱花的高度都为7,飘落的速度为2,
则两朵樱花飘落的时间为8,现在你可以控制樱花飘落的速度v,当v为何值时才能使所有的
樱花在m秒的时间内全部飘落且v的值要尽可能小。
格式
输入格式
第一行输入两个正整数n和m(1<=n<=m<=2000000)
第二行输入n个正整数a[i](1<=a[i]<=10000000),分别指的是每朵樱花的高度
输出格式
输出一个正整数v,代表樱花最合适的速度
样例
样例输入 Copy
2 10
5 6
样例输出 Copy
2
题解:该题数据过于庞大,不可能通过直接枚举得到,所以需要二分答案法;
但是测试时发现二分也超时了,最后我想出了两种方法。

第一种代码如下`

#include<bits/stdc++.h>
using namespace std;
long long b[10000010];
long n,m,maf;
bool check(long x)
{long i;long long sum=0,as=0; long ans=0; for(i=1;;i++){if(i!=1){sum=b[i*x-x];  //对于每个x,直接查找 i*x 到(i+1)*x之间的路程数as=b[i*x];     // 从而实现跳跃式的遍历}if(i*x>=maf){ans+=(b[maf]-sum)*i;break;}if(i==1) ans+=b[x];if(i!=1)ans+=(as-sum)*i;}if(ans>m) return false;else return true;
}
int main()
{while(scanf("%ld %ld",&n,&m)!=EOF){long long sum=0,mid,ans;for(long i=1;i<=n;i++){long f;scanf("%ld",&f);if(i==1) maf=f;else if(i!=1 && maf<f) maf=f;   // **找到最大的数,缩小桶的区间**b[f]++;                        // **桶装数**sum+=f;}for(long i=2;i<=maf;i++)b[i]+=b[i-1];              // **通过这步将每个b[i] 变为 小于等于i 的 路程个数之和**long r=sum,l=1; while(r>=l)            // **普通二分 没什么变化 重点在这个查找函数里面**{mid=(l+r)/2;if(check(mid)){ans=mid;r=mid-1;}else l=mid+1;}printf("%lld\n",ans);}return 0;
}

第二种方法

第二种方法的效率比第一种要低一些,重点在対二分剪枝

long r=maf,l=sum/m;    // **剪枝**while(r>=l) {mid=(l+r)/2;if(check(mid)){ans=mid;r=mid-1;}else l=mid+1;}

如果使用剪枝的话,可以直接遍历每一个数就行,不需要跳跃式遍历也可以AC,但是我觉得跳跃式更好一些。

二分## 二分

秒速五厘米(快速二分跳跃查找答案)相关推荐

  1. Java冒泡,快速,插入,选择排序^_^+二分算法查找

    这段时间在学Java,期间学到了一些排序和查找方法.特此写来和大家交流,也方便自己的日后查看与复习. 1.下边是Java的主类: public class Get {public static voi ...

  2. 一万个数查找两个重复数,快速二分查找法 O(logN)(转)

    题目:1-1000放在含有1001个元素的数组中,只有唯一的一个元素值重复,其它均只出现一次.每个数组元素只能访问一次,设计一个算法,将它找出来:不用辅助存储空间,能否设计一个算法实现? 一.有序情况 ...

  3. Java1.使用二分搜索算法查找任意N个有序数列中的指定元素。 2.通过上机实验进行算法实现。 3.保存和打印出程序的运行结果,并结合程序进行分析,上交实验报告。 4.至少使用两种方法进行编程,直接查

    1.使用二分搜索算法查找任意N个有序数列中的指定元素. 2.通过上机实验进行算法实现. 3.保存和打印出程序的运行结果,并结合程序进行分析,上交实验报告. 4.至少使用两种方法进行编程,直接查找/递归 ...

  4. Excel如何快速完成图片查找?

    ​ 1.如下图有一些图片和名称,现在我们想要快速完成图片查找 ​ 2.首先我们点击[图片工具]选项 ​ 3.选择[图片查找] ​ 4.接着我们分别录入图片区域和名称区域 ​ 5.最后我们勾选[同时调整 ...

  5. 高考数学快速解题法-必备快速高效(含答案解析)

    高考数学快速解题法-必备快速高效(含答案解析) 本文作者:vxbomath 考生们在高考数学中要掌握正确有效数学解题方法和解题技巧,快速高效 解决高中数学解题效率,拿到最高分. 好了,今天就分享到这里 ...

  6. 铨顺宏RFID工具跟踪管理系统,快速完成工具查找

    一.应用背景 RFID工具管理系统,快速完成工具查找!在各行各业中工具其实是一项重要不可或缺的资产.相关作业人员每天都要与工具打交道,怎么快捷便利的领用.归还,查找和保护这些工具,对企业管理来说是非常 ...

  7. POJ 3258 River Hopscotch(二分查找答案)

    一个不错的二分,注释在代码里 #include <stdio.h> #include <cstring> #include <algorithm> #include ...

  8. 黑马程序员 python快速编程入门课后答案_Python快速编程入门课后程序题答案

    前言 本文只是简单的整理了一下课后习题的编程题,具体的填空.选择.判断可以见:Python快速编程入门课后习题答案 第一章 1.编写一个Python程序,输出如下图效果. ++++++++++ +  ...

  9. Python - 排序( 插入, 冒泡, 快速, 二分 )

    插入排序 算法分析 两次循环, 大循环对队列中的每一个元素拿出来作为小循环的裁定对象 小循环对堆当前循环对象在有序队列中寻找插入的位置 性能参数 空间复杂度 O(1) 时间复杂度 O(n^2) 详细代 ...

最新文章

  1. pytorch图像和张量的相互转换_[Pytorch]Pytorch的tensor变量类型转换
  2. python可以做什么有趣的东西-您用python做过什么有趣的事?(什么事python)
  3. awk之特征相同行的合并 ~转
  4. 字典对中文字符串进行排序 python_Python基础入门:字符串和字典
  5. Android 11 Frameworks中引用aar包
  6. CodeForces - 1141ESuperhero Battle简单模拟
  7. wps合并所有sheet页_WPS里面如何批量打印(WPS2019)
  8. [Email] 收发邮件的协议 : IMAP and SMTP , POP3 and SMTP
  9. Windows 10 预览版安装
  10. sqlite数据库下载安装和初步操作和所遇到的问题
  11. 从架构设计到系统实施-基于.NET 3.0的全新企业应用之基于WCF的系统服务
  12. 面部皮肤200种问题_史上最全的皮肤病图谱,我竟然全部看完了……
  13. 日夕如是寒暑不间,基于Python3+Tornado6+APScheduler/Celery打造并发异步动态定时任务轮询服务
  14. ubuntu18.04 编译rtt-lwr
  15. 数据采集 - 获取【码市】最新发布需求,并实时通知用户 案例二
  16. HTML基础教程 插图
  17. httprunner-2-linux下搭建hrun(下)
  18. druid.io index_realtime任务的hand off:仍然是源码+log说清楚
  19. 《精读 Mastering ABP Framework》教程发布
  20. shell里的json超级工具 jq 高级用法介绍

热门文章

  1. JAVASCRIPT显示农历的日历
  2. 科学视角读科幻:李开复新书《AI未来进行式》|赠书福利
  3. 多媒体文件格式之MP4
  4. 2005年网络设备市场预测
  5. 现在买房傻子才掏钱,手把手教你买…
  6. 【美化§§3D安卓主题win7电脑主题】
  7. python爬虫之中古诗网
  8. ISE14.7联合Modelsim10.1a设置
  9. 和谐软件过程--和谐宣言之儒法人事
  10. 基于asp.net703宠商城网站宠物系统