腾讯2020校园招聘---假期
腾讯2020校园招聘—假期
文章目录
- 腾讯2020校园招聘---假期
- 一、题目描述
- 二、题目分析
- 三、代码
一、题目描述
由于业绩优秀,公司给小Q放了 n 天的假,身为工作狂的小Q打算在在假期中工作、锻炼或者休息。他有个奇怪的习惯:不会连续两天工作或锻炼。只有当公司营业时,小Q才能去工作,只有当健身房营业时,小Q才能去健身,小Q一天只能干一件事。给出假期中公司,健身房的营业情况,求小Q最少需要休息几天。
输入描述:
第一行一个整数 表示放假天数
第二行 n 个数 每个数为0或1,第 i 个数表示公司在第 i 天是否营业
第三行 n 个数 每个数为0或1,第 i 个数表示健身房在第 i 天是否营业
(1为营业 0为不营业)
输出描述:
一个整数,表示小Q休息的最少天数
输入例子1:
4
1 1 0 0
0 1 1 0
输出例子1:
2
例子说明1:
小Q可以在第一天工作,第二天或第三天健身,小Q最少休息2天
二、题目分析
这显然是一道动规题,我们可以选择让小Q工作或者锻炼的时间最长从而让小Q的休息时间最少
先捋一下动规的步骤:
第⼀步, ⼀定要明确 dp 数组的含义
首先我们需要明确动规的 状态
:显然只有三种状态:工作、锻炼、休息
,那么我们怎么在dp数组中表示出来呢??
其实还有一种状态,就是休假的天数
,因为天数是在动态变化的,所以也需要记录,而工作、锻炼、休息
中不会出现连续的锻炼和工作,所以可以用一个二维数组来表示:dp[i][j]dp[i][j]dp[i][j] === kkk;意思是:在第i天j状态下最小的休息天数
规定:
dp[i][0]dp[i][0]dp[i][0]代表在第i天休息的情况下小Q最少的休息天数;
dp[i][1]dp[i][1]dp[i][1]代表在第i天锻炼的情况下小Q最少的休息天数;
dp[i][2]dp[i][2]dp[i][2]代表在第i天工作的情况下小Q最少的休息天数;
如:dp[3][0] = k;代表第3天休息的情况下小Q的最少休息天数为k;
第⼆步, 定义 base case
dp数组出来了,base case就比较简单了
dp[0][0]=0dp[0][0] = 0dp[0][0]=0
dp[0][1]=0dp[0][1] = 0dp[0][1]=0
dp[0][2]=0dp[0][2] = 0dp[0][2]=0
还没开始休假整个锤子~~~~
第三步, 找状态转移⽅程
到这里我们就需要找状态转移方程
- dp[i][0]dp[i][0]dp[i][0]:
代表当前休息,那么小Q最少的休息天数只能选工作和锻炼最小的加上1
,即dp[i][0]=min(dp[i−1][0],min(dp[i−1][1],dp[i−1][2]))+1;dp[i][0] = min(dp[i-1][0],min(dp[i-1][1], dp[i-1][2]))+1;dp[i][0]=min(dp[i−1][0],min(dp[i−1][1],dp[i−1][2]))+1; - dp[i][1]=0dp[i][1] = 0dp[i][1]=0:代表当前可以锻炼,那么就选工作和休息中可以使休息天数最少的情况dp[i][1]=min(dp[i−1][0],dp[i−1][2])dp[i][1] = min( dp[i-1][0], dp[i-1][2] )dp[i][1]=min(dp[i−1][0],dp[i−1][2]);
- dp[i][2]=0dp[i][2] = 0dp[i][2]=0:同理:dp[i][2]=min(dp[i−1][0],dp[i−1][1])dp[i][2] = min( dp[i-1][0], dp[i-1][1] )dp[i][2]=min(dp[i−1][0],dp[i−1][1]);
最后我们要求的结果就保存在min(dp[n][0],min(dp[n][1],dp[n][2]))min(dp[n][0], min(dp[n][1], dp[n][2]))min(dp[n][0],min(dp[n][1],dp[n][2]))中
三、代码
# include <iostream>
# include <vector>
# include <limits.h>
using namespace std;int main()
{int n ;while(cin>>n){vector<int> gym(n);vector<int>work(n);for (int i=0; i<n; ++i )cin>>work[i];for(int i=0; i<n; ++i )cin>>gym[i];vector<vector<int>> dp(n + 1,vector<int>(3,INT_MAX)); // 0是休息,1是锻炼,2是工作dp[0][0] = dp[0][1] = dp[0][2] = 0;//遍历天数for ( int i=1; i<=n; ++i ){if ( gym[i-1] == 1 ){// 可以锻炼,选休息和工作最小的dp[i][1] = min( dp[i-1][0], dp[i-1][2] );}if ( work[i-1] == 1 ){// 可以工作,选休息和锻炼最小的dp[i][2] = min( dp[i-1][0], dp[i-1][1] );}//可以休息,选工作和锻炼最小的 +1dp[i][0] = min(dp[i-1][0], min(dp[i-1][1], dp[i-1][2]))+1;}//返回结果int res = min(dp[n][0], min(dp[n][1], dp[n][2]));cout<<res<<endl;}
}
腾讯2020校园招聘---假期相关推荐
- 腾讯2020校园招聘----逛街
腾讯2020校园招聘----逛街 文章目录 腾讯2020校园招聘----逛街 一.问题描述 二.问题分析 一.问题描述 小Q在周末的时候和他的小伙伴来到大城市逛街,一条步行街上有很多高楼,共有n座高楼 ...
- 腾讯2020校园招聘----覆盖
腾讯2020校园招聘----覆盖 文章目录 腾讯2020校园招聘----覆盖 一.题目描述 二.问题分析 三.代码 一.题目描述 小Q在进行一场竞技游戏,这场游戏的胜负关键就在于能够能争夺一条长度为L ...
- 腾讯2020校园招聘----逆序对
腾讯2020校园招聘----逆序对 文章目录 腾讯2020校园招聘----逆序对 一.题目描述 二.题目分析 方法一:暴力求解(超时) 方法二:优化 一.题目描述 二.题目分析 首先,我们看到要求逆序 ...
- 腾讯2020校园招聘正式批市场研究 | 群面(2019.10.17)
岗位:市场研究 批次:正式批 啊 是我梦想的腾讯爸爸啊,鉴于我太菜了,只能帮大家到群面了--. ? 「更多我的秋招经验贴」 <2020我的秋招总结帖 [数据分析岗] | 目录索引> 一.面 ...
- 腾讯2020校园招聘-产品
题目描述 当前有一个热门的理财场景叫"梦想计划",即让用户设定一个目标值,然后通过定投.或者不定期存入资金等方式达到目标.请设计一个针对梦想计划理财的线上推广方案. 解答 (1) ...
- 腾讯2020校园招聘后台开发面试编程题
腾讯一面的时候,面试官给出了一道题,题目如下,当初由于是第一次面试,比较紧张没做出来,现在回顾总结一下. 题目 小Q在周末的时候和他的小伙伴来到大城市逛街,一条步行街上有很多高楼,共有n座高楼排成一行 ...
- 腾讯2020校园招聘-后台 编程题
小Q想要给他的朋友发送一个神秘字符串,但是他发现字符串的过于长了,于是小Q发明了一种压缩算法对字符串中重复的部分进行了压缩,对于字符串中连续的m个相同字符串S将会压缩为[m|S](m为一个整数且1&l ...
- 压缩算法 【腾讯2020校园招聘-后台综合-第一次笔试 】
题目:小Q想要给他的朋友发送一个神秘字符串,但是他发现字符串的过于长了,于是小Q发明了一种压缩算法对字符串中重复的部分进行了压缩,对于字符串中连续的m个相同字符串S将会压缩为[m|S](m为一个整数且 ...
- 腾讯2021校园招聘-后台综合-第二次笔试 Apare_xzc
腾讯2021校园招聘-后台&综合-第二次笔试 Apare_xzc 2020.9.6 20:00-22:00 5道编程题,500分 第一题:链表的公共部分 题意: 给定两个长度分别为n,m的链表 ...
最新文章
- 基于jquery的ajax聊天室系统,基于jQuery的Ajax聊天室应用毕业设计(含外文翻译)...
- linux停止jar程序,Linux 启动停止SpringBoot jar 程序部署Shell 脚本的方法
- 从浏览器地址栏输入url到显示页面的步骤
- Linux系统编程(七)消息队列
- php输出mysql查询,MySQL查询和PHP输出
- vue中created钩子函数与mounted钩子函数的使用区别
- wordpress编辑插件_如何使用Tabify编辑屏幕插件减少WordPress帖子编辑器屏幕的拥挤
- ugp和千幻魔镜买哪个好_美的空调和格力空调哪个好?这两个牌子您会买哪个?...
- linux空磁盘划分,Linux 磁盘划分
- GB35114—⑤、附 录C
- 某传销app的用户信息泄露
- spring boot整合elk
- 微信支付 商户号该产品权限未开通,请前往商户平台
- 程序员圈“内卷”这么严重,如何才能更进一步,实现个人价值?
- 计算机网络--万维网实验
- tarena学习EJB笔记
- [Alpha] Scrum Meeting 8 - TEAM LESS ERROR
- 京东自建数据中心核心技术解密——基础设施篇
- css实现实心三角形、有边框的三角形和空心三角形
- 通达信目录文件结构及说明
热门文章
- 解决IntelliJ IDEA下Maven报错Unknown lifecycle phase “.test.skip=true“. You must specify a valid lifecycle
- Puppet exec资源介绍(二十六)
- 跟着《架构探险》学轻量级微服务架构 (一)
- Android--静默安装
- Ubuntu连接以太网时显示“设备未托管”的解决办法
- linux TCP数据包封装在SKB的过程分析
- 面试之 listview优化
- uva 10723 Cyborg Genes
- MySQL5日期类型DATETIME和TIMESTAMP相关问题详解
- 安装memcached服务和PECL关于memcache的两个PHP扩展