有没有大神教教我这题咋么写!深信服笔试题~

1、空地上竖立着n个从左到右排列的木板,它们可以把水挡住,但溢出最边上木板的水将会流到空地上。

已知木板间距都是单位1,现给定每个木板的高度,请求出总共能接住的水量?

说明一点,这里只考虑间距(宽度)和高度,不考虑第三个维度,因此水量是平方单位。

示例1,木板高度分别是2,1.3,那么我们可以接住2*2=4平方单位的水,如下图所示。注意,中间那个木板被水淹没了。
|
|- -|
|-|-|

示例2,木板高度分别是2 .4,3,那么可以接住2*1+3*1 =5平方单位的水,如下图所示。
|
|-|
|-|-|
|-|-|
**********************************************************************************************************************************************8
2、深信服经常给员工发放下午茶,为保证新鲜,下午 茶需要当天采购。

下午茶有水果和面点两种类型,其中水果和面点都有单独的采购价格,它们的价格都是整数元。

某次,负责采购的阿姨忘记了水果和面点各自的价格,但她保存了两天的采购的记录:第一天采购了a1份水果,b1份面点,总花费v1元。第二天采购了a2份水果,b2份面点,总花费v2元。阿姨希望你帮她计算,水果和面点的实际价格分别是多少。

输入描述:

第一行一个正整数工(T<=100),表示有r组测试数据。

接下来行,每行6个整数,a1, b1, v1,a2, b2, v2。(所有数字都>=0且<= 1000, 000, 000。它们的意义如题所述}

有508的数据案例,.上述六个数都属于区间[1, 100];而1008的数据案例,. 上述六个数都属于区间[0, 1e9]。
********************************************************************************************************************
3、每个人的职业生涯状态有起有落,程序员也如此。

我们对程序员的状态做一个简化, 单纯用缺陷密度来衡量一个程序员一天的状态。如果这一天的缺陷密度比平均值高,则认为他这一天的状态差,高出越多,认为状态越差。比平均值低,则认为状态好,低得越多,认为状态越好。人的状态是可以叠加的,如果两个连续时间段的缺陷密度起来低于平均值,则认为这两个时间段合起来状态是好的。

给定一个程序员很 长一段时间中各个时间片段的缺陷密度(V)与平均值(A)的差值(D=V-A),求出该程序员的黄金时间段的缺陷密度差值D的家加和。

缺陷密度差值D如果为正数,表明缺陷密度高于平均值,如果为负数,表明缺陷密度低于平均值。

所调黄金时间段,指一个连续时间段,这段时间的缺陷密度与平均值的差值D累加起来,在各种划分方法中,是最小的,也即状态是最好的。
********************************************************************************************************************************************
4、今年参加深信服校招的同学非常优秀,很多同学身兼多种技能,可以胜任几种不同岗位(比如开发、算法、网络攻防等)。

有n位同学应聘m种不同岗位,每个岗位要招聘k个人。经过评估,每位同学对于每个岗位都有一个能力值, 表示对该岗位的擅长程度。用A[][0]表示第i位同学对于第j个岗位的能力值。若第i位同学确实被安排在第种岗位,那他将创造A[[U]这么大的价值。

为了让尽可能多的同学发挥本领,信服君决定请你来给同学们安排岗位。让所有岗位所招聘的同学的创造的总价值最大。需要说明的是,一个同学不能同时安排在多个岗位,每个岗位最多安排k个同学。

#深信服##笔试题目##Java#
全部评论
木板接水答案链接:https://blog.csdn.net/lizhentao0707/article/details/82828338
点赞 回复 分享
发布于 2018-09-24 16:44
一样的题目,最后一题没写
点赞 回复 分享
发布于 2018-09-23 18:23
第一题 找出最大值 判断是不是最左或最右的板 不是的话在左边和右边分别找最大值 和中间值构成一部分 完了再往两边递归
点赞 回复 分享
发布于 2018-09-23 18:38
#include <iostream> int GetWater(int * pBoardHeight, int iLeft, int iRight); int main() {     int i_test_count;//测试用例数     std::cin >> i_test_count;     int * p_board_count = new int[i_test_count];//每个测试用例木板数数组     int ** p_board_height = new int *[i_test_count];//木板高度数组     for (int i = 0; i < i_test_count; i++)     {         std::cin >> p_board_count[i];         p_board_height[i] = new int[p_board_count[i]];         for (int j = 0; j < p_board_count[i]; j++)         {             std::cin >> p_board_height[i][j];         }     }     for (int i = 0; i < i_test_count; i++)     {         std::cout << GetWater(p_board_height[i], 0, p_board_count[i] - 1) << std::endl;     }     if (p_board_height)     {         for (int i = 0; i < i_test_count; i++)         {             if (p_board_height[i])             {                 delete[] p_board_height[i];                 p_board_height[i] = NULL;             }         }     }     delete[] p_board_height;     p_board_height = NULL;     return 0; } int GetWater(int * pBoardHeight, int iLeft, int iRight) {     int i_max_1 = 0;     int i_max_1_index = 0;     int i_max_2 = 0;     int i_max_2_index = 0;     for (int i = iLeft; i <= iRight; i++)     {         if (pBoardHeight[i] > i_max_1)         {             i_max_1 = pBoardHeight[i];             i_max_1_index = i;         }     }     for (int i = iLeft; i <= iRight; i++)     {         if ( (pBoardHeight[i] > i_max_2 && pBoardHeight[i] != i_max_1)              || (pBoardHeight[i] == i_max_1 && i != i_max_1_index) )         {             i_max_2 = pBoardHeight[i];             i_max_2_index = i;         }     }     int mid_1 = (i_max_1_index < i_max_2_index) ? i_max_1_index : i_max_2_index;     int mid_2 = (i_max_2_index > i_max_1_index) ? i_max_2_index : i_max_1_index;     int sum = (mid_2 - mid_1) * i_max_2;     if (mid_2 < iRight) sum += GetWater(pBoardHeight, mid_2, iRight);     if (mid_1 > iLeft) sum += GetWater(pBoardHeight, iLeft, mid_1);     return sum; }
点赞 回复 分享
发布于 2018-09-23 19:03
你好请问你这个深信服的做出了没有,想请问一下
点赞 回复 分享
发布于 2020-05-07 10:01

相关推荐

点赞 21 评论
分享
牛客网
牛客企业服务