DP 网易内推:合唱团
链接:https://www.nowcoder.com/questionTerminal/661c49118ca241909add3a11c96408c8
来源:牛客网
- 热度指数:18491 时间限制:1秒 空间限制:32768K
- 算法知识视频讲解
输入描述:
每个输入包含 1 个测试用例。每个测试数据的第一行包含一个整数 n (1 <= n <= 50),表示学生的个数,接下来的一行,包含 n 个整数,按顺序表示每个学生的能力值 a
i
(-50 <= ai <= 50)。接下来的一行包含两个整数,k 和 d (1 <= k <= 10, 1 <= d <= 50)。
输出描述:
输出一行表示最大的乘积。
输入
3
7 4 7
2 50
输出
49
/*
历程:一开始以为是动态规划,后来觉得不好实现。BFS然后写了半截发现BFS无法实现跳跃,然后看了下50的维度,直接DFS爆搜。果不其然。有20%TLE。 思考DP实现:
暴力DFS时,之所以TLE主要是由于重复计算了大量不需要的值。对于编号i来讲,以i结束,长度为k的乘积mat[i][j],最大值为a[p]*[j-1],p<i && p>= i-d.
mat[i][j] =max( mat[p][j-1]*a[i]) p<i && p>= i-d. 需要注意的时a[i]可能<0,所以而且负负得正,我们需要存一个最小矩阵,方程于上类似 matmin[i][j] =min( mat[p][j-1]*a[i],matmin[p][j-1]*a[i])
mat[i][j] = max( mat[p][j-1]*a[i],matmin[p][j-1]*a[i]) p<i && p>= i-d.
*/
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdlib.h> using namespace std;
int i,j,k,n,m,d;
int a[];
long long getMax(long long a[],int len){
long long res;
res = a[];
for(i = ;i < len;i++){
if(res < a[i])
res = a[i];
}
return res;
}
long long mat[][];
long long matmin[][];
long long res;
int main()
{
while(cin >> n){
for(i = ; i < n;i++){
cin >> a[i];
}
cin >> k >> d;
memset(mat,,sizeof(mat));
memset(matmin,,sizeof(mat));
for(i = ;i < n;i++){
matmin[i][] = mat[i][] = a[i];
}
int p;
for(i = ;i < n;i++){
for(j = ;j <= k;j++){
long long tmp;
long long tmpmin;
for(p = max(i-d,);p < i;p++){
if(p == max(i-d,)){
tmp = max(mat[p][j-]*a[i],matmin[p][j-]*a[i]);
tmpmin = min(mat[p][j-]*a[i],matmin[p][j-]*a[i]);
}
else{
if(tmp < mat[p][j-]*a[i])
tmp = mat[p][j-]*a[i];
if(tmp < matmin[p][j-]*a[i])
tmp = matmin[p][j-]*a[i]; if(tmpmin > mat[p][j-]*a[i])
tmpmin = mat[p][j-]*a[i];
if(tmpmin > matmin[p][j-]*a[i])
tmpmin = matmin[p][j-]*a[i];
}
}
mat[i][j] = tmp;
matmin[i][j] = tmpmin;
}
}
res = mat[][k];
for(i = ;i < n;i++) if(res < mat[i][k])
res = mat[i][k];
cout << res <<endl;
}
return ;
}
DP 网易内推:合唱团的更多相关文章
- 网易内推(Android) 拿offer
学校BBS上师兄发网易内推,凑下热闹投了一发 一面:电话面 大概25分钟,感觉面试官气场很足,主要关注了其中一个 个人开源项目 1.自我介绍 2.说说你做的这个项目 当时谈到使用到了开源框架xtuil ...
- 剑指Offer——网易校招内推笔试题+模拟题知识点总结
剑指Offer--网易校招内推笔试题+模拟题知识点总结 前言 2016.8.2 19:00网易校招内推笔试开始进行.前天晚上利用大约1小时时间完成了测评(这个必须做,关切到你能否参与面试).上午利用2 ...
- 快的打车 技术部 在 杭州 招聘 #年前面试 年后入职#架构师 - 内推网(neitui.me)
快的打车 技术部 在 杭州 招聘 #年前面试 年后入职#架构师 - 内推网(neitui.me) 陈丹 (cd**@kuaidadi.com) 01-18 发布了内推 #年前面试 年后入职#架构师 • ...
- 阿里2019实习内推,五轮技术面+一轮HR面,Java岗面经
在牛客网上获取到很多知识和信息,现在反馈一波,希望能对广大找实习的同学有所帮助. 个人情况:EE方向渣硕,二月末内推了阿里集团某部门Java岗,约三周完成了所有面试. 面经如下: 一面 (简历评估): ...
- 阿里提前批校招内推offer经历
经过一个半月的阿里内推面试,今天终于收到了阿里的offer邮件 .阿里的内推面试一共有四轮,本人是7月19号投的内推邮件,8月28号收到了offer的邮件.首先本人谈谈内推的看法.内推是公司招聘人才的 ...
- 2015年3月阿里内推(c++研发)实习生电面经历
2015年3月开学开始就听说阿里会有内推,果不其然在师兄的引荐下推了菜鸟网络,但是在学校的BBS上看到了阿里云部门,而且要会C++,这使我更感兴趣,重新选择了方向,当然最后选择了阿里云.在此分享一下三 ...
- [原创]上海好买基金招高级Java技术经理/运维主管/高级无线客户端开发等职位(内推)
[原创]上海好买基金招高级Java技术经理/运维主管/高级无线客户端开发等职位(内推) 内部推荐职位 高级JAVA技术经理: 岗位职责: 负责项目管理(技术方向),按照产品开发流 ,带领研发团队,制定 ...
- FaceBook Twitter实习生简历求内推
写在博客里面吧. 有一个朋友,男,博士在读,研究方向为图像处理,计算机视觉相关. 想在在读期间有一些海外实习经历.不知道哪位博友,有相关的人脉,求内推啊.内推成功的话请吃大餐,哈哈!
- 百度系统部 在 北京市海淀区西二旗首创空间大厦 招聘 Python-交付运维系统研发工程师 - 内推网(neitui.Me)
百度系统部 在 北京市海淀区西二旗首创空间大厦 招聘 Python-交付运维系统研发工程师 - 内推网(neitui.Me) 汪肴肴 (wa**@baidu.com) 发布了 Python-交付运维系 ...
随机推荐
- [js插件开发教程]原生js仿jquery架构扩展开发选项卡插件
jquery插件一般是这么干的: $.fn.插件名称 = function(){}, 把插件的名称加在.fn上,在源码里面实际上是扩展到构造函数的原型对象上,如果你没看过jquery的源代码,或者你曾 ...
- Java集合框架体系详细梳理,含面试知识点。
一.集合类 集合的由来: 面向对象语言对事物都是以对象的形式来体现,为了方便对多个对象的操作,就需要将对象进行存储,集合就是存储对象最常用的一种方式. 集合特点: 1,用于存储对象的容器.(容器本身就 ...
- LeetCode 594. Longest Harmonious Subsequence (最长的协调子序列)
We define a harmonious array is an array where the difference between its maximum value and its mini ...
- LeetCode 229. Majority Element II (众数之二)
Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times. The algorit ...
- LeetCode 80. Remove Duplicates from Sorted Array II (从有序序列里移除重复项之二)
Follow up for "Remove Duplicates":What if duplicates are allowed at most twice? For exampl ...
- Vue源码后记-其余内置指令(1)
把其余的内置指令也搞完吧,来一个全家桶. 案例如下: <body> <div id='app'> <div v-if="vIfIter" v-bind ...
- android开发第一天
今天可以说是我正式投入android怀抱的第一天吧,按着自己的兴趣,努力地吸取知识.听了程老师的课,也觉得收获很多,毕竟以前都是看着书本或者网页教程来学习,第一次有人这么直接地跟你教授着,说着一些你听 ...
- [C#]使用ILMerge将源DLL合并到目标EXE(.NET4.6.2)
本文为原创文章,如转载,请在网页明显位置标明原文名称.作者及网址,谢谢! 本文主要是使用微软的ILMerge工具将源DLL合并到目标EXE,因此,需要下载以下工具: https://www.micro ...
- spring mvc常用注解的说明
最近一段时间学习了springboot,所以熟悉一下mvc中常用的注解,这样可以方便开发 简介: @RequestMapping RequestMapping是一个用来处理请求地址映射的注解,可用于类 ...
- A strange lift
Problem Description There is a strange lift.The lift can stop can at every floor as you want, and th ...