博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数轴上n个点(a0,a1,.....an),长为L的绳子最多能覆盖多少个点。
阅读量:6769 次
发布时间:2019-06-26

本文共 1231 字,大约阅读时间需要 4 分钟。

题目来自于百度2014校园招聘研发工程师笔试题(深圳站)  中的一个题目,题目描述如下

 

题目:数轴上n个点(a0,a1,.....an),长为L的绳子最多能覆盖多少个点。

 

    刚开始把问题想的复杂化了,想引入动态规划和线段树,后来发现其实用一个队列模拟就可以了。而且可以直接使用STL的deque容器。

首先不停地向队列尾部插入点,当队列中的点无法被线段覆盖时则从队列首弹出点,直到队列中的元素可以重新被线段覆盖,这一过程模拟即可。

 

代码如下:

1 #include
2 #include
3 using namespace std; 4 int main(){ 5 int l,n; 6 int queuelen=0; 7 cin>>l>>n; 8 deque
ideque; 9 10 int count=0; 11 int num=0;12 int maxans=0;13 while(count
>a;17 if(ideque.size()==0){18 queuelen=0;19 }else{20 queuelen+=a-ideque.back();21 }22 ideque.push_back(a);23 count++;24 num++;25 }26 if (maxans<(num-1)) maxans=num-1;27 while (queuelen>=l){28 int out=ideque.front();29 ideque.pop_front();30 if(ideque.size()==0){31 queuelen=0;32 }else{33 queuelen-=(ideque.front()-out);34 }35 num--;36 }37 } 38 cout<<"ans:"<
<

 

 

 

转载于:https://www.cnblogs.com/sworddance/p/3359288.html

你可能感兴趣的文章
自定义表单自动填充样式
查看>>
基于 react, redux 最佳实践构建的 2048
查看>>
学习笔记: Swift 关于结构体与类的探索
查看>>
JS的原型和继承
查看>>
【避坑】初次接项目的血与泪,扎坑了老铁(二)
查看>>
莫空面试记2
查看>>
Redux源码了解一下
查看>>
Logback配置解析
查看>>
读书笔记-Android中的广播机制
查看>>
关于想要的变量提升
查看>>
记录一些常用项
查看>>
Categroy方法覆盖原理
查看>>
2.3 Android 换肤原理
查看>>
使用koa处理前端发送的http请求
查看>>
iframe弹窗 - 列表渲染第一次可以,再次点击不显示 问题
查看>>
HDFS应用场景、原理、基本架构
查看>>
Java并发编程(5):volatile变量修饰符-意料之外的问题(含代码)
查看>>
webpack中的css引入文件需要用~@的形式,为什么?
查看>>
[译] React fiber如何以及为何使用列表来遍历组件树
查看>>
Dubbo 源码分析 - 集群容错之 LoadBalance
查看>>