【Python算法】:假期

2020校招8.17日腾讯技术笔试题5 题目: 由于工作业绩优秀,公司给小Q放了n天的假,身为工作狂的小Q打算在假期中工作、锻炼和休息。他有个奇怪的习惯:不会连续两天工作或锻炼。只有当公司营业时,小Q才能去工作,只有当健身房营业时,小Q才能去健身,小Q一天只能干一件事。给出假期中公司,健身房的营业情况,求小Q最小需要休息几天? 输入: 第一行表示放假天数 第二行n个数,0或1,表示公司第i天是否营业 第三行表示健身房 1为营业 0为不营... 阅读详情

由于业绩优秀,公司给小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天

============================================================================
算法思路

题目中的工作、锻炼和休息可以看作三种状态,每天做的事情,就是在状态间转移,有如下状态转移关系(其中工作和锻炼的下一个状态不能使自己,休息可以回到自己):
在这里插入图片描述
因为,下一个状态总是只和前一状态相关。
我们做如下假设,设a是截止至橙色区域最大非休息天数,b是截止至绿色区域最大非休息天数,现依据a和b推算灰色区域的最大非休息天数c,若有f(a,b,x,y)=c,则,f(b,c,x,y)=d。
我们根据a、b、x、y推算出下一个最大非休息天数c,则进一步可以根据b、c、x、y,以此类推,可迭代出最大非休息天数。(也就是每一次都保留,目前的最大非休息天数和上一次的最大非休息天数)
在这里插入图片描述
根据以上假设,我们可以做如下推演,我们假设b最后落在状态“锻炼”上,用状态“工作”去承接a。
1、对于(0,0)的情形
(1)假设初始状态在“工作”,他只能转移至“锻炼”,那么a就要向下加上0,由于“锻炼”是0,所以最大的非休息天数保持不变,仍然是a,同时这个数值要赋予“锻炼”,因为状态已经转移。
(2)假设初始状态在“锻炼”,他只能转移至“工作”,那么b就要向上加上0,由于“工作”是0,所以最大的非休息天数保持不变,仍然是b,同时这个数值要赋予“工作”,因为状态已经转移。
2、对于(1,0)的情形
(1)假设初始状态在“工作”,他只能转移至“锻炼”,那么a就要向下加上1,由于“锻炼”是1,可以锻炼,因此最大的非休息天数就变为a+1;但如果a+1小于b,意味着选择状态“工作”作为初始状态是不好的(因为我们直接选择“锻炼”作为初始状态,下一步是休息,因为“工作”是0,得到的最大非休息天数就是b,比a+1好),可以直接保留b。那么对于以“锻炼”为初始状态的情形,我们把前一步的最大非休天数max(a,b)保留下来即可。
3、其他情形以此类推
最终我们可以整合四种情形旧的非休数组(a,b),被x、y更新为(max(a,b+x), max(b,a+y))。
在这里插入图片描述
下面这个图可以帮助进一步理解,假设max(a,b+x)< max(b,a+y),我们又得到新的一组a和b,以此类推,最终得到最大的非休天数,。
在这里插入图片描述
Python代码如下:

'''
#笔试格式
n = int(input())
work = list(map(lambda x:int(x), input().split()))
exercise = list(map(lambda x:int(x), input().split()))
'''
#生成模拟数组
import numpy as np
n = 100000
np.random.seed(5); a = list(np.random.randint(0, 2, n))
np.random.seed(6); b = list(np.random.randint(0, 2, n))
#算法代码
dp = [[0] * (n + 1), [0] * (n + 1)]
for i in range(1, n + 1):
    dp[0][i] = max(a[i-1] + dp[1][i - 1], dp[0][i - 1])
    dp[1][i] = max(b[i-1] + dp[0][i - 1], dp[1][i - 1])
print(n - max(dp[0][n], dp[1][n]))

十一假期旅游如何规划路线,让python带你玩转各景点 livandata 数据EDTA创始人,没有之一 现担任数据EDTA个人公众号董事长兼CEO兼财务兼创作人 口号:让大数据赋能每一个人 前言 数据EDTA的读者们,大家好~ 国庆将至大家有没有安排出行呢? 有没有翻遍了网站,为出行计划焦头烂额呢? 哈哈 不要着急~ 今天,笔者与大家分享,身为一个python技术员是一件多么幸福的事情,因为:假期苦短,要用python~ 笔者也... 阅读详情

相关推荐

腾讯2020校园招聘---假期

腾讯2020校园招聘—假期 文章目录腾讯2020校园招聘---假期一、题目描述二、题目分析三、代码 一、题目描述 由于业绩优秀,公司给小Q放了 n 天的假,身为工作狂的小Q打算在在假期中工作、锻炼或者休息。他有个奇怪的习惯:不会连续两天工作或锻炼。只有当公司营业时,小Q才能去工作,只有当健身房营业时,小Q才能去健身,小Q一天只能干一件事。给出假期中公司,健身房的营业情况,求小Q最少需要休息几天。 ...

wolfGuiDao的博客 1120

练习:条件循环、计数循环、分支、函数、计算思维

好好学习 ,天天向上 1、工作日的力量 内容: 一年365天,一周5个工作日,每天进步1% 一年365天,一周2个休息日,每天退步1% 这种工作日的力量,如何呢? 分析(计算思维): 当遇到工作日,向上增加1%,遇到休息日向下减少1%,循环365天,最后累计运行的结果就是365天之后的结果。 程序: #daydayupQ1.py dayup = 1.0 #设基数为1.0 dayfactor = 0.01 #设增加的参数为0.01 #模拟循环365天的过程 for i in range(365): i

weixin_44088154的博客 1126

【数据可视化-116】全球假期排行榜可视化分析:探索世界各国的工作与生活平衡(中国排名倒数第七)

🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。💬 博主粉丝群介绍:① 群内初中生、高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。

qq_38614074的博客 1089

假期_腾讯笔试

假期: 由于业绩优秀,公司给小Q放了 n 天的假,身为工作狂的小Q打算在在假期中工作、锻炼或者休息。他有个奇怪的习惯:不会连续两天工作或锻炼。只有当公司营业时,小Q才能去工作,只有当健身房营业时,小Q才能去健身,小Q一天只能干一件事。给出假期中公司,健身房的营业情况,求小Q最少需要休息几天。 输入描述: 第一行一个整数 n(1\leq n\leq 100000)n(1≤n≤100000) 表示放假...

Light 736

‌NTRU算法详细教程 | 2025年最新版(基于NIST后量子密码标准更新)

‌:NTRU是当前抗量子加密的黄金标准,‌。

blns_yxl的博客 1804

本地化部署dify,使用Database插件实现dify直连数据库报错No module named ‘MySQLdb‘解决方案

网上查阅各种资料,有说修改/dify-main/docker/volumes/sandbox/dependencies目录下的python-requirements.txt文件,添加了如下两行,试验后无效。,看到有人是其他报错,但是URI配置如下(在mysql后面加了pymysql),尝试后果真成功了。按照系统提示设置完数据库URI后保存出现错误。在工具市场查询Database,点击后进行授权。最后在该插件的项目地址获得灵感。

qiaoxu1989的博客 4333

DC-DC降压转换与I2C控制:MP8859与PIC18F86J10的嵌入式电源设计

DC-DC降压转换是嵌入式电源设计的核心技术,通过高效电压转换满足不同电子设备的供电需求。其工作原理基于开关调节技术,通过PWM或PFM模式实现电压稳定输出。结合数字控制技术如I2C接口,可实现电源参数的动态调整和远程监控,显著提升系统的智能化水平。MP8859作为一款支持I2C的同步升降压控制器,与PIC18F86J10单片机配合,广泛应用于实验室可编程电源、工业设备供电等场景。这种组合不仅保证了传统电源的稳定性,还通过数字接口实现了输出电压、电流限制等参数的精确控制,特别适合需要高精度和自适应调压的应用

weixin_33834628的博客 486

Transformer是什么?看完这篇你就醍醐灌顶

前言 由谷歌团队提出的预训练语言模型BERT近年来正在各大自然语言处理任务中屠榜(话说学者们也挺有意思的,模型名都强行凑个芝麻街的人物名,哈哈哈)。 BERT算法的最重要的部分便是Transformer的概念,它本质上是Transformer的编码器部分。 而Transformer是什么呢?transformer是永远的神,自从transformer使用了抛弃rnncnn的纯attention机制之后,各种基于transformer结构的预训练模型都如雨后春笋般雄起,而transformer中最重要就是使用

fs1341825137的博客 6万+

Python(贪心算法)问题 F: 节目安排_假期到了,天宝终于可以无压力的看电视了。但是他喜欢的节目有点多,如何尽可能多的看到完整的节目。

问题 F: 节目安排 题目描述 假期到了,天宝终于可以无压力的看电视了。 但是他喜欢的节目有点多,如何尽可能多的看到完整的节目。 他把喜欢的节目时间表给你,请帮他安排一下吧。 输入 输入包含多组测试数据。每组输入的第一行是一个整数n(n<=100), 表示天宝喜欢的节目的总数。 接下来n行,每行输入两个整数si和ei(1<=i<=n), 表示第i个节目的开始和结束时间, 为了简化问题,每个时间都用一个正整数表示。 当n=0时,输入结束。 输出 对于每组输入,输出能完整看到的电视节目的个

XQC_KKK的博客 1243

从零构建:openEuler WSL下的ARM交叉编译工具链自动化部署方案

本文详细介绍了在openEuler WSL环境下使用Ansible自动化部署ARM交叉编译工具链的方案。通过编写Ansible角色和Playbook,实现从基础环境配置到工具链安装、环境变量设置的一键部署,大幅提升嵌入式开发效率。方案支持多种ARM架构,并扩展了QEMU仿真、VS Code远程开发等实用功能,是嵌入式开发者的高效解决方案。

h3i4j的博客 383

EMD (经验模态分解) 在 C++ 中的实现指南

EMD 是由 Norden E. Huang 等人在1998年提出的一种适用于非线性和非平稳信号的分析方法。对称性:IMF 的上下包络对称。零交叉点:IMF 的零交叉点数量与极值点数量相同或相差一个。本文详细介绍了如何在C++中实现EMD,包括理论背景、算法步骤、代码实现和优化等内容。通过丰富的代码示例和详细的解释,希望能够帮助读者掌握EMD的基本原理,并能够在实际项目中灵活应用。未来,随着信号处理技术的不断发展,EMD及其变种(如EEMD、CEEMDAN等)将继续在各个领域发挥重要作用。

qq_38334677的博客 1750

从新开始

实习三个月,终于把工作辞了,在接下来两个月的暑假,只有两个选择,要么接着找份实习,要么好好看书,必须合理的安排,因为 开学就面临着找工作了。但是到现在还没确定到底去哪个城市。下面真的要好好考虑一下了。 在实习的时候,确实学到了很多,包括新技术和如何与人相处之类的,就不说了,关键还是靠自己努力啊。 如果,暑假看书的,要复习下面的: ...

weixin_30484247的博客 106

ESP32-IDF开发实例-外部Flash与FatFs文件系统数据存取

FatFs是用于小型嵌入式系统的通用FAT / exFAT文件系统模块。FatFs模块是按照ANSI C(C89)编写的,并且与磁盘I/O层完全分开。因此,它独立于平台。它可以并入资源有限的小型微控制器中,例如8051,PIC,AVR,ARM,Z80,RX等。ESP32-IDF对FatFs提供了良好的支持。

视觉与物联智能 2918

IT专业入门,高考假期预习指南

作为该领域的前行者和经验前辈,分享一下个人经验,希望对有志于踏入IT领域的高考少年们有参考价值,计算机科学导论是入门学习计算机科学的关键课程,它涵盖了计算机科学的基本概念、发展历程和主要的理论框架。通过系统学习,你将建立起对计算机系统、编程技能和操作系统的深入理解,为将来更深入的学习和专业发展打下坚实基础。以上是基本的学习路线图,具体的学习路径可以根据个人的兴趣、目标和实际情况进行调整和扩展。当谈到实际的IT项目案例时,我可以分享一些我参与过的经历,这些案例可以帮助新人了解IT行业的工作情况、流程和要求。

小相探索IT世界 1398

SAP-ABAP:FI财务会计模块常用BAPI及核心用途实例说明

SAP FI模块的BAPI覆盖了从主数据管理、凭证过账到财务关账的全流程操作,是系统集成与自动化的重要工具。实际应用中需结合业务场景选择合适的BAPI,并严格遵循事务控制与校验规则。如需扩展功能,可通过BAdI或用户出口增强标准逻辑。

baidu_35680696的博客 1601

数据权限设计

随着IT新技术不断完善成熟,企业数字化建设得到全面的发展,数据将成为一个创造财富的重要来源,并且越来越多地被视为一项值得重视的企业资产。未来,很多企业之间的竞争,其实也是资源和数据竞争。那么针对数据资产,如何保障它的安全性呢?数据的权限管理无疑是必不可少的。数据权限从数据源来控制不同的用户能够查看、使用和授权不同的数据表数据(其实就是数据表行列的管控),就如同筑起了一道道护城墙,为数据安全提供了保障。

qq_40664711的博客 1万+

全球股市开盘时间和市场假期查询 API 指南

全球股市开盘时间查询指南 本文详细介绍了全球主要证券交易所的开盘时间、时区差异及夏令时影响。内容涵盖北美、南美、欧洲、亚太等地区主要市场的交易时段,包括开盘/收盘时间、时区转换、午餐休息安排等关键信息。特别强调了夏令时(DST)对市场交易时间的季节性影响,以及不同地区交易所的运营特点。为投资者提供了全球市场交易时间的全面参考,帮助合理安排交易计划,把握市场波动高峰时段。

2501_92164949的博客 2467

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

假期惊喜,收到公司款项86167.14元

一位比亚迪员工的帖子显示,在9月26日下午,他的银行卡突然收到一笔 86167.14元 的款项,是比亚迪发放的 2024 年利润奖金。,根据同一个间隙编号只会在单行内被统计一次,用总行数减去出现次数,即得到「最少穿过的砖块数」。你需要找出怎样画才能使这条线穿过的砖块数量最少,并且返回穿过的砖块数量。你不能沿着墙的两个垂直边缘之一画线,这样显然是没有穿过一块砖的。如果你画的线只是从砖块的边缘经过,就不算穿过这块砖。题目要求穿过的砖块数量最少,等效于通过的间隙最多。是一个代表从左至右每块砖的宽度的数组。

宫水三叶的刷题日记 919

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Prophet时间序列算法总结及python实现案例

Prophet算法总结、使用注意事项及python实现案例

积跬步,慕至千里的博客 1638

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

算法实现没思路?最全Python算法实现大礼包!(附学习资源)

整理 | Rachel责编 |Jane出品 |Python大本营(ID:pythonnews)【导语】数据结构与算法是所有人都要学习的基础课程,自己写算法的过程可以帮...

AI科技大本营 1782

洛谷 P2055 [ZJOI2009]假期的宿舍(二分图匹配)

题目描述 学校放假了 · · · · · · 有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题。 比如 A 和 B 都是学校的学生,A 要回家,而 C 来看B,C 与 A 不认识。我们假设每个人只能睡和自己直接认识的人的床。那么一个解决方案就是 B 睡 A 的床而 C 睡 B 的床。而实际情况可能非常复杂,有的人可能认识好多在校学生,在校学生之间也不一定都互相认识。 我...

whisperlzw的博客 211

最全 Python 算法实现资源汇总!

整理 | Rachel责编 |Jane出品 |Python大本营(ID:pythonnews)【导语】数据结构与算法是所有人都要学习的基础课程,自己写算法的过程可以帮...

优快云资讯 8991

python dijkstra算法_算法实现没思路?最全Python算法实现大礼包!(附学习资源)...

整理 | Rachel责编 | Jane【导语】数据结构与算法是所有人都要学习的基础课程,自己写算法的过程可以帮助我们更好地理解算法思路,不要轻视每一个算法,一些虽然看似容易,但可能有很多坑。但是坑还是要自己一个一个踩过来的,而且也只有自己踩过坑,才能让自己从理论到技能都得到提升。为了帮助大家在这个假期能提高学习效率,进阶 Python 技能,营长为大家推荐了一份用 Python代码实现算法的资源...

weixin_39524741的博客 69

python 算法库_一份用Python代码实现算法的资源帖,涵盖从入门到高级的各类算法...

【导语】数据结构与算法是所有人都要学习的基础课程,自己写算法的过程可以帮助我们更好地理解算法思路,不要轻视每一个算法,一些虽然看似容易,但可能有很多坑。但是坑还是要自己一个一个踩过来的,而且也只有自己踩过坑,才能让自己从理论到技能都得到提升。为了帮助大家在这个假期能提高学习效率,进阶Python技能,营长为大家推荐了一份用Python代码实现算法的资源帖,涵盖从入门到高级的各类算法。下文中,营长首...

weixin_39903538的博客 78
上一篇: 【Python算法】:压缩
下一篇: 【Python算法】:视野争夺
QuantCoder
博客等级 码龄5年 14粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值