腾讯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校园招聘---假期相关推荐

  1. 腾讯2020校园招聘----逛街

    腾讯2020校园招聘----逛街 文章目录 腾讯2020校园招聘----逛街 一.问题描述 二.问题分析 一.问题描述 小Q在周末的时候和他的小伙伴来到大城市逛街,一条步行街上有很多高楼,共有n座高楼 ...

  2. 腾讯2020校园招聘----覆盖

    腾讯2020校园招聘----覆盖 文章目录 腾讯2020校园招聘----覆盖 一.题目描述 二.问题分析 三.代码 一.题目描述 小Q在进行一场竞技游戏,这场游戏的胜负关键就在于能够能争夺一条长度为L ...

  3. 腾讯2020校园招聘----逆序对

    腾讯2020校园招聘----逆序对 文章目录 腾讯2020校园招聘----逆序对 一.题目描述 二.题目分析 方法一:暴力求解(超时) 方法二:优化 一.题目描述 二.题目分析 首先,我们看到要求逆序 ...

  4. 腾讯2020校园招聘正式批市场研究 | 群面(2019.10.17)

    岗位:市场研究 批次:正式批 啊 是我梦想的腾讯爸爸啊,鉴于我太菜了,只能帮大家到群面了--. ? 「更多我的秋招经验贴」 <2020我的秋招总结帖 [数据分析岗] | 目录索引> 一.面 ...

  5. 腾讯2020校园招聘-产品

    题目描述 当前有一个热门的理财场景叫"梦想计划",即让用户设定一个目标值,然后通过定投.或者不定期存入资金等方式达到目标.请设计一个针对梦想计划理财的线上推广方案. 解答 (1) ...

  6. 腾讯2020校园招聘后台开发面试编程题

    腾讯一面的时候,面试官给出了一道题,题目如下,当初由于是第一次面试,比较紧张没做出来,现在回顾总结一下. 题目 小Q在周末的时候和他的小伙伴来到大城市逛街,一条步行街上有很多高楼,共有n座高楼排成一行 ...

  7. 腾讯2020校园招聘-后台 编程题

    小Q想要给他的朋友发送一个神秘字符串,但是他发现字符串的过于长了,于是小Q发明了一种压缩算法对字符串中重复的部分进行了压缩,对于字符串中连续的m个相同字符串S将会压缩为[m|S](m为一个整数且1&l ...

  8. 压缩算法 【腾讯2020校园招聘-后台综合-第一次笔试 】

    题目:小Q想要给他的朋友发送一个神秘字符串,但是他发现字符串的过于长了,于是小Q发明了一种压缩算法对字符串中重复的部分进行了压缩,对于字符串中连续的m个相同字符串S将会压缩为[m|S](m为一个整数且 ...

  9. 腾讯2021校园招聘-后台综合-第二次笔试 Apare_xzc

    腾讯2021校园招聘-后台&综合-第二次笔试 Apare_xzc 2020.9.6 20:00-22:00 5道编程题,500分 第一题:链表的公共部分 题意: 给定两个长度分别为n,m的链表 ...

最新文章

  1. 基于jquery的ajax聊天室系统,基于jQuery的Ajax聊天室应用毕业设计(含外文翻译)...
  2. linux停止jar程序,Linux 启动停止SpringBoot jar 程序部署Shell 脚本的方法
  3. 从浏览器地址栏输入url到显示页面的步骤
  4. Linux系统编程(七)消息队列
  5. php输出mysql查询,MySQL查询和PHP输出
  6. vue中created钩子函数与mounted钩子函数的使用区别
  7. wordpress编辑插件_如何使用Tabify编辑屏幕插件减少WordPress帖子编辑器屏幕的拥挤
  8. ugp和千幻魔镜买哪个好_美的空调和格力空调哪个好?这两个牌子您会买哪个?...
  9. linux空磁盘划分,Linux 磁盘划分
  10. GB35114—⑤、附 录C
  11. 某传销app的用户信息泄露
  12. spring boot整合elk
  13. 微信支付 商户号该产品权限未开通,请前往商户平台
  14. 程序员圈“内卷”这么严重,如何才能更进一步,实现个人价值?
  15. 计算机网络--万维网实验
  16. tarena学习EJB笔记
  17. [Alpha] Scrum Meeting 8 - TEAM LESS ERROR
  18. 京东自建数据中心核心技术解密——基础设施篇
  19. css实现实心三角形、有边框的三角形和空心三角形
  20. 通达信目录文件结构及说明

热门文章

  1. 解决IntelliJ IDEA下Maven报错Unknown lifecycle phase “.test.skip=true“. You must specify a valid lifecycle
  2. Puppet exec资源介绍(二十六)
  3. 跟着《架构探险》学轻量级微服务架构 (一)
  4. Android--静默安装
  5. Ubuntu连接以太网时显示“设备未托管”的解决办法
  6. linux TCP数据包封装在SKB的过程分析
  7. 面试之 listview优化
  8. uva 10723 Cyborg Genes
  9. MySQL5日期类型DATETIME和TIMESTAMP相关问题详解
  10. 安装memcached服务和PECL关于memcache的两个PHP扩展