深信服笔试题 php,2019深信服校招笔试题------木板接水
2019深信服校招笔试题——木板接水
题目:
空地上竖立着n个从左到右排列的木板,它们可以把水挡住,但溢出最边上木板的水将会流到空地上。已知木板间距都是单位1,现给定每个木板的高度,请求出总共能接住的水量?说明一点,这里只考虑间距(宽度)和高度,不考虑第三个维度,因此水量是平方单位。
示例1,木板高度分别是2,1,3,那么我们可以接住2*2=4平方单位的水,如下图所示。注意,中间那个木板被水淹没了。
示例2,木板高度分别是2,4,3,那么可以接住2*
1+3*1=5平方单位的水,如下图所示。
思路:不断降低所有木板高度 (如图)
(1) 先找到左右两端木板高度的较小值minHeight=min(ivec[0],ivec[size-1]) (ivec中存放排列的木板高度),求出这部分容量volume=(size-1)*miniHeight;
(2) 将所有木板长度减去minHeight,得到新的排列木板序列,定义两个指针low、high,分别从左右开始遍历数组ivec,找到左右两端第一个高度大于0的木板,此时minHeight=min(ivec[low],ivec[high]), volume=(high-low)*minHeight;故总共能接住的总量sum += volume;(每次容量相加)
(3) 重复步骤2,直至木板序列中只有一块木板高度大于0或全部木板高度均小于0,则此时sum为最大容量。
#include
#include
#include
using namespace std;
void sub(vector &ivec, int &height)
{
for (auto &m : ivec)
m -= height;
}
int getVolume(vector &ivec, int &low, int &high, int &height)
{
int size = ivec.size();
int volume = 0;
for (; low < size; low++)
{
if (ivec[low]>0)
break;
}
for (; high >= 0; high--)
{
if (ivec[high]>0)
break;
}
if (low < size && high < size)
{
height = min(ivec[high], ivec[low]);
volume = (high - low)*height;
}
return volume;
}
int main()
{
int t;
cin >> t;
while (t--)
{
int n;
cin >> n;
vector ivec(n, 0);
for (auto &m : ivec)
cin >> m;
int sum = 0;
int size = ivec.size();
int low = 0;
int high = size - 1;
int height = min(ivec[low], ivec[high]);
int volume = getVolume(ivec, low, high, height);
while (low < size && high < size && ivec[low] > 0 && ivec[high] > 0)
{
sum += volume;
sub(ivec, height);
volume = getVolume(ivec, low, high, height);
}
cout << sum << endl;
}
return 0;
}
深信服笔试题 php,2019深信服校招笔试题------木板接水相关推荐
- html5 笔试题 选择题,2019拼多多前端笔试题
选择.填空题: 1.IP地址,子网掩码的计算 2.Internet网络层重要协议 3.http请求方法 4.HTML中a标签的伪类 5.alert(undefined==null)的输出结果 6.ht ...
- 【机试题】2019大疆嵌入式笔试题A卷(附超详细解答)
前不久的大疆嵌入式线上笔试,可能是因为最近只是在做毕设项目,还没有来得及认真系统复习,直接崩了.就凭借着记忆,把一些记得住的笔试题分享一下,作下记录. 整个大疆嵌入式线上笔试,分为选择题(单选题.多选 ...
- 2019 小红书校招笔试题字符串压缩算法
时间限制:1秒 空间限制:32768K 1 2 3 4 输入一串字符,请编写一个字符串压缩程序,将字符串中连续出现的重复字母进行压缩,并输出压缩后的字符串. 例如: aac 压缩为 1ac xxxxy ...
- oppo安卓面试题,万字Android技术类校招面试题汇总,GitHub标星3.2K
一.开始的开始 **Android框架体系架构(高级UI+FrameWork源码)**这块知识是现今使用者最多的,我们称之Android2013~2016年的技术,但是,即使是这样的技术,Androi ...
- 深信服C++开发岗校招笔试题-笔试经历
今天做了深信服的笔试题,题目比较基础,考的知识点比较细,编程题也不难.在此总结下: 选择题都是不定项,但是有几道明显是单选,涉及到位运算知识(考了&=.~=还有|=,我后来查了下好像没有~=这 ...
- sdn 深信服_推动物联网安全行业发展,青莲云受邀出席2019深信服创新大会
近日,以"畅想"为主题的2019深信服创新大会在深圳举办,本次大会由深信服科技.IDC 联合主办,是一场围绕着数字化创新技术的IT盛会,2000余位各行业IT管理者和深信服的合作伙 ...
- 2019深信服笔试 —— 猎人抓兔子
2019深信服笔试 -- 猎人抓兔子 题目描述: 假设兔子有n个排成一排的洞,编号为1和n.兔子每天晚上跳到相邻的一个洞里住,而猎人每天白天检查其中的一个洞.猎人告诉你每天检查的洞的编号,希望你分析一 ...
- 2019深信服校招——木板接水
2019深信服校招--木板接水 题目描述 空地上竖立着n个从左到右排列的木板,它们可以把水挡住,但溢出最边上木板的水将会流到空地上.已知木板间距都是单位1,现给定每个木板的高度,请求出总共能接住的水量 ...
- 百度2019校招笔试题
百度2019校招笔试题 1. 探险安排 小明要为n个人计划一次火星的探险,其中一个重要的任务是为每个参与者安排食物.仓库里面有m个能用一天的食物包裹,每个食物包裹有不同的类型ai.每个人每天必须用且只 ...
最新文章
- svn在linux上的安装
- 微软研究院开源编程语言Verona,借鉴Rust、Cyclone等特性
- 《数学之美》第13章 Google AK-47的设计者—阿米特.辛格博士
- 虚拟机生命周期八招巧管理
- 如果看了这篇文章你还不懂傅里叶变换,那就过来掐死我吧(一)
- 【car】几款电动代步车参数
- vsFTPD编译安装使用实用手册
- JAVA中的字符串操作
- Excel完成将多行多列数据转化为一列
- CNN发展历史【从LeNet到DenseNet】
- linux部署3proxy源码,在CentOS 7系统中从源码安装RTPProxy的方法
- 当今年轻人创业,什么行业最有前途
- 【stanford】梯度、梯度下降,随机梯度下降
- Jasmine基础API
- (附源码)计算机毕业设计Java远程健康数据管理系统
- C++通信录管理系统
- 第二届BJD CTF做题总结与题目复现-MISCCrypto
- Springboot项目配置404错误页面
- CSS3:clip-path详解
- 服务器多开系统,服务器多开虚拟机操作系统