HNU软件能力实训4-12. 疫情期间

2023-05-16

写在前面

你好!欢迎来到我的博客,希望我的思路能够帮到你!

问题描述

正值新冠疫情期间,阿迪没法返回学校学习,他希望通过参加一些比赛来提高一下编程技能,同时做做运动。他收集了接下来的 n 天里每一天的信息,包括健身房是否开放,或者互联网上是否有程序设计竞赛。

第 i 天可以有以下四种情况之一:

 - 该天健身房不开放,互联网上也没有竞赛
   
 - 该天健身房不开放,但互联网上有竞赛
   
 - 该天健身房开放,但互联网上没有竞赛
   
 - 该天健身房开放,互联网上也有竞赛

每天阿迪要么休息,要么编写程序(如果该天有竞赛),要么做运动(如果该天健身房开放)。

现在有一个限制条件:不能连续两天都去做运动,或者连续两天都编写程序。阿迪对自己要求很高,希望尽量多写程序或者多做运动,使得休息的天数尽量最少,求出这个天数。

输入形式

输入的第一行为一个正整数 n (1 ≤ n ≤ 100),表示接下来的天数。

第二行为一个用空格分隔的整数序列 a1、a2、…、an(0 ≤ ai ≤ 3),这里

  • ai=0,第 i 天健身房不开放,互联网上也没有竞赛

  • ai=1,第 i 天健身房不开放,但互联网上有竞赛

  • ai=2,第 i 天健身房开放,但互联网上没有竞赛

  • ai=3,第 i 天健身房开放,互联网上也有竞赛

输出形式

输入阿迪可能休息的最小天数。注意限制条件:

  • 不能连续两天去做运动

  • 不能连续两天编写程序

样例输入

【样例输入1】

4
1 3 2 0

【样例输入2】

7
1 3 3 2 1 2 3

【样例输入3】

2
2 2

样例输出

【样例输出1】

2

【样例输出2】

0

【样例输出3】

1

样例说明

在第一个样例中,阿迪在第一天编写程序,在第三天做运动,因此他仅有两天可以休息。

在第二个样例中,阿迪可以在第1、3、5、7天编写程序,其他天做运动,因此没有哪天休息。

在第三个样例中,阿迪可以在第1天或第2天做运动,但不能连续两天运动,因此他有一天休息。

解题思路

这道题是一个dp问题,还是延续之前的做法,将原问题分为集合的属性以及集合的划分。

集合f[i][j]表示到第i天为止,且第i天做了j的休息天数

属性min

集合的划分:第i天的前一天是第i-1天,第i-1天我们可以休息,编程或者健身,那么我们就可以由第i-1天的情况来推出第i天的情况。

但是需要注意的是,由于会出现冲突问题,且我们知道第i天做了什么,所以我们要根据第i天做的东西,分类的选取第i-1天的方案进行递推

最后的状态转移方程就是f[i][j]=min(f[i-1][0],f[i-1][1],f[i-1][2])

最后,不要问我为什么没有f[i-1][3]3这种情况可以分到12里面

AC代码

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;

const int N=110,inf=0x3f3f3f3f;
int n;
int f[N][3];

//f[i][j]表示到第i天为止且第i天做了j的最小休息天数

int main()
{
	//输入
    cin>>n;
    
    //初始化每种方案为不存在
	memset(f,inf,sizeof f);
	
	//如果只有0天,不管怎么样都没得休息
    f[0][0]=f[0][1]=f[0][2]=0;
    
    //dp
    int x;
    for(int i=1;i<=n;i++)//由于有下标-1的操作,所以我们从1开始
    {
        cin>>x;//输入今天做了什么
        f[i][0]=min(f[i-1][0],min(f[i-1][1],f[i-1][2]))+1;//今天休息的话,昨天干什么都可以,这种情况必定存在,不需要判断
        if(x==1||x==3)//如果今天可以编程
            f[i][1]=min(f[i-1][0],f[i-1][2]);//昨天可以休息和健身
        if(x==2||x==3)//如果今天可以健身
            f[i][2]=min(f[i-1][0],f[i-1][1]);//昨天可以休息和编程
    }
	
	//输出
	//第n天我们可以有三种情况,输出其中的最小值
    cout<<min(f[n][0],min(f[n][1],f[n][2]))<<endl;
    system("pause");
    return 0;
}

写在最后

如果代码有任何问题,欢迎评论或者私信斧正。如果内容对对你有启发,不妨点个赞吧

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HNU软件能力实训4-12. 疫情期间 的相关文章

  • Logstash完成ELK集群

    注 xff1a 本文与同步 9条消息 搭建Elasticsearch和kibana完成初步ELK日志分析平台搭建 kali yao的博客 CSDN博客 logstash搭建 1 logstash介绍 什么是logstash 是一个数据采集
  • SQL基本语句及用法

    目录 一 基本SQL语句用法及概述 1 常用MySQL命令 2 语法规范 3 SQL语句分类 二 数据查询语言 1 基础查询 1 xff09 查询的字段列表可以是字段 常量 表达式 函数等 2 xff09 使用别名 xff0c 字段名和别名
  • PyCharm 社区版 安装 教程(Windows)

    注 xff1a 如果已经安装过python 3 5 及以上版本的解释执行器则跳过此步骤 下载 PyCharm 社区版 软件 PyCharm windows 版本 安装包如下 Thank you for downloading PyCharm
  • 监控zabbix面试题

    目录 1 我们可以用zabbix监控哪些 2 zabbix的主动监控与被动监控 3 Zabbix监控做过哪些 4 zabbix监控mysql的四大性能指标 5 配置zabbix自定义监控流程 6 安全组是什么 xff0c 限制了3306的入
  • 【ros学习】12.ros启动gazebo时摄像头的发布进程被杀死,导致rqt_image_view无法显示画面

    ros启动gazebo时摄像头的发布进程被杀死 xff0c 导致rqt image view即使订阅了正确的话题也无法显示画面 原因是gazebo的版本过低 xff0c 与Rviz不兼容 ubuntu16 04匹配的ros版本是kineti
  • 系统运维面试题

    目录 1 什么是运维 什么是游戏运维 2 在工作中 xff0c 运维人员经常需要跟运营人员打交道 xff0c 请问运营人员是做什么工作的 xff1f 3 请描述下linux 系统的开机启动过程 4 为什么连接的时候是三次握手 xff0c 关
  • Xshell的使用

    本文修改于 xff1a 高效使用XSHELL 简书 jianshu com https www jianshu com p 67b83d3f2e40 一 XShell的概述 1 XSHELL是什么 Xshell是用于Windows平台的功能
  • linux下解压rar和7z压缩文件

    在windows下我们压缩解压文件通常后缀为rar xff0c 在linux下我们压缩解压文件通常后缀为tar 默认在linux下我们不能解压压缩rar文件 我们可以下载rarlinux安装包实现解压压缩后缀为rar的包 下载地址 xff1
  • Filebeat输出json格式的日志并指定message字段的值

    目录 1 开启json格式所需的字段概述 2 配置示例 3 如果问题没有解决可点击官网 1 开启json格式所需的字段概述 filebeat配置input要有以下字段 json keys under root true json overw
  • Prometheus添加邮件告警和企业微信机器人告警

    我们将在 Prometheus 服务器上编写警报规则 xff0c 这些规则将使用我们收集的指标并在指定的阈值或标准上触发警报 xff0c 收到警报后 xff0c Alertmanager 会处理警报并根据其标签进行路由 一旦路径确定 xff
  • 麒麟ARM64制作nginx,java,php,node基础镜像

    一 环境准备 1 网上搜底层镜像 麒麟容器基础镜像 xff1a docker search kylin 镜像准备 docker pull kylin 注 xff1a 最好自己制作底层镜像 2 自己做底层镜像 注 xff1a 做镜像时需要在麒
  • docker部署简易Prometheus

    注 xff1a 部署前可以先系统的学习一下 xff1a Introduction Prometheus中文技术文档 在之后需要书写自定义告警的 xff0c 需要在学习一下PromQL语言 xff0c 一般网上也能搜到 xff0c 可以在安装
  • k8s面试题-进阶

    1 简述etcd及其特点 etcd是CoreOS团队发起的开源项目 xff0c 是一个管理配置信息和服务发现 xff08 service discovery xff09 的项目 xff0c 它的目标是构建一个高可用的分布式键值 xff08
  • 制作Alpine Linux镜像报错errors: 15 distinct packages available

    1 执行报错 执行docker build t 镜像 版本 f Dockerfile 报错 xff1a 2 查看网上的解决思路 网上文档解决思路 xff1a 这边我做了一下改变把这些写入了dockerfile 加了几个RUN RUN rm
  • C++ class与struct的区别

    在C语言中 xff0c struct是作为数据类型存在的 xff0c 因此其中只能包含变量 xff0c 不可以包含函数 xff0c 结构相对简单 而C 43 43 采用OOP编程思想 xff0c 为struct扩充了很多属性 xff0c 使
  • 【ros学习】13.URDF机器人建模详解

    一 URDF简介 URDF xff08 Unified Robot Description Format xff09 统一机器人描述格式 xff0c URDF使用XML格式描述机器人文件 URDF语法规范 xff0c 参考链接 xff1a
  • 如何强制“git pull”覆盖本地文件?

    问题描述 xff1a 如何强制覆盖 git pull 上的本地文件 xff1f 我的本地存储库包含一个文件名与服务器上相同的文件 错误 xff1a 未跟踪的工作树文件 example txt 将被合并覆盖 解决方案1 huntsbot co
  • 如何克隆特定的 Git 分支? [复制]

    问 xff1a 这个问题在这里已经有了答案 xff1a How do I clone a single branch in Git 26 个回答 8 年前关闭 Git clone 会将远程分支克隆到本地 有没有什么方法可以自己克隆一个特定的
  • tensorflow报错:InvalidArgumentError: Assign requires shapes of both tensors to match. lhs shape= [12]

    tensorflow报错 xff1a InvalidArgumentError Assign requires shapes of both tensors to match lhs shape 61 12 rhs shape 61 6 我
  • opencv矩形轮廓查找

    之前公司软件版本是在通过调用摄像头再手动圈定仪器数字区域进行识别 xff0c 现在在此基础上实现自动定位 xff0c 检测出所有的矩形通过其宽高之比和面积进行筛选 xff0c 部分关键代码如下 自动定位数字区域 include lt ope

随机推荐

  • Nginx部署多个Vue项目,配置不同域名

    文章目录 一 前言二 上传dist文件三 配置nginx cnf四 域名解析 一 前言 一个服务器需要部署多个前端项目 比如需要一个企业官网比如需要一个管理系统 这时候一个Nginx要怎么配置多个前端项目呢本文详细讲解 xff1a 通过不同
  • ESP32-C3入门教程 问题篇⑫——undefined reference to rom_temp_to_power, in function phy_get_romfunc_addr

    文章目录 一 前言 二 发现问题 三 解决问题 一 前言 本文基于VS Code IDE进行编程 编译 下载 运行等操作 基础入门章节请查阅 ESP32 C3入门教程 基础篇 基于VS Code构建Hello World 教程目录大纲请查阅
  • USART RX 不上拉的后果

    这两天写一个STM32的程序 xff0c 其中USART1是要接一个串口屏做显示的 xff0c 调试前期是还没用到显屏 xff0c 就拿USART1做log打印 然后就发现了一个很怪异的现象 USART1串口转usb接到电脑 xff0c 程
  • 虚拟机ros系统安装

    一 新建虚拟机 1 这里选择自定义安装 这里为了灵活性一般使用稍后安装 红款内根据自己情况选择安装路径 这一步一定要选择IDE否则开机 会报错 这里默认20g就够用 点击完成虚拟机就安装完成了 二安装ros系统 点击这个光驱安装镜像 把镜像
  • 用python实现realsenseD435i相机实现视频显示,并按空格键执行拍照,保存照片的程序

    为了使用Intel RealSense D435i相机 xff0c 我们需要安装pyrealsense2库 你可以通过以下命令安装它 xff1a pip install pyrealsense2 下面是一个使用pyrealsense2库实现
  • 二元信号量、互斥量和临界区之间的区别

    二元信号量 适合只能被唯一一个线程独占访问的资源 多元信号量 适合允许多个线程并发访问的资源 互斥量 和二元信号量类似 xff0c 资源仅同时允许一个线程访问 xff0c 但和信号量不同的是 xff0c 信号量在整个系统可以被任意线程获取并
  • ROS摄像机的标定

    本文主要为ROS camera calibration 单目相机标定教程的翻译 原文 xff1a http wiki ros org camera calibration Tutorials MonocularCalibration 仅供英
  • <视觉>——单目相机的标定(简单原理+Opencv实现)

    单目相机的标定原理大致如下 xff1a 世界坐标到像素坐标的转换 期间的参数有S尺度因子 xff0c 内参矩阵K xff0c 旋转矩阵R xff0c 平移矩阵T xff0c 一共八个未知数 在Opencv中我们可以方便的根据相机拍摄不同位姿
  • Python入门自学进阶-Web框架——4、HttpRequest和HttpResponse及模板

    HTTP请求中产生两个核心的对象 xff1a http请求 xff1a HttpRequest对象 http响应 xff1a HttpResponse对象 所在位置django http xff0c 前边用的reques就是HttpRequ
  • 维修杜邦线(母头)

    在一个研发团体中 xff0c 即使有某一位或几位财大气粗的 xff0c 也难免有其他成员借设备使用的 xff0c 研发过程中使用的电子设备在底层通讯之间大都采用杜邦线连接 xff0c 大家都熟悉 xff0c 优点就不说了 xff0c 先说说
  • 【酷毙了】野火新版fireTools多功能调试助手,有Windows和Linux版本,就问你喜不喜欢。...

    01 软件简介 野火fireTools 多功能调试助手 xff0c 是一款使用QT开发 xff0c 可以在Windows和Linux环境下完美运行的绿色客户端 xff0c 不需要安装 xff0c 双击即可运行 xff0c 其功能包括 xff
  • 结合模型,视频动态演示PID三个参数的作用!

    PID控制器 xff08 比例 积分 微分控制器 xff09 xff0c 由比例单元 xff08 P xff09 积分单元 xff08 I xff09 和微分单元 xff08 D xff09 组成 可以通过调整这三个单元的增益Kp xff0
  • 单片机数字滤波算法如何实现?(附代码)

    ID xff1a 技术让梦想更伟大 整理 xff1a 李肖遥 单片机主要作用是控制外围的器件 xff0c 并实现一定的通信和数据处理 但在某些特定场合 xff0c 不可避免地要用到数学运算 xff0c 尽管单片机并不擅长实现算法和进行复杂的
  • HNU软件能力实训2-9. 字符串压缩

    写在前面 你好 xff01 欢迎来到我的博客 xff0c 希望我的思路能够帮到你 xff01 问题描述 给定一个由n个小写字母组成的字符串s xff0c 需要使用最少数量的钱币来压缩它 压缩该字符串 xff0c 必须将s表示为多个相互连接的
  • HNU软件能力实训2-21. 新型冠状病毒(COVID19)传播

    写在前面 你好 xff01 欢迎来到我的博客 xff0c 希望我的思路能够帮到你 xff01 问题描述 防控新冠病毒 xff0c 必须时刻引起大家的足够重视 xff0c 特别是人员集中活动场所 xff0c 保持好社交距离 然而 xff0c
  • HNU软件能力实训3-8. ab串

    写在前面 你好 xff01 欢迎来到我的博客 xff0c 希望我的思路能够帮到你 xff01 问题描述 给定一个由字符 a 和字符 b 组成的字符串 xff0c 可以删除若干字符 xff0c 使得剩下来的字符串满足前后段为a xff0c 中
  • HNU软件能力实训3-9. 占座位

    写在前面 你好 xff01 欢迎来到我的博客 xff0c 希望我的思路能够帮到你 xff01 问题描述 一个人可以去占多个座位 xff0c 而且一定是要连续的座位 xff0c 如果占不到他所要求的这么多座位 xff0c 那么他就一个座位也不
  • ROS编程入门(C++ 及 思路)

    使用Autolabor官方入门教程 xff0c 笔记内容为注意事项 首页 Autolabor开源ROS机器人底盘 官方网站 一 ROS通信机制的解释 例如在生活中 xff0c 我们在家里有一个放零食的箱子 xff0c 而操作服务器就是这个箱
  • HNU软件能力实训4-5. 小希的数表

    写在前面 你好 xff01 欢迎来到我的博客 xff0c 希望我的思路能够帮到你 xff01 问题描述 Gardon 昨天给小希布置了一道作业 xff0c 即根据一张由不超过 5000 的 N 3 lt 61 N lt 61 100 个正整
  • HNU软件能力实训4-12. 疫情期间

    写在前面 你好 xff01 欢迎来到我的博客 xff0c 希望我的思路能够帮到你 xff01 问题描述 正值新冠疫情期间 xff0c 阿迪没法返回学校学习 xff0c 他希望通过参加一些比赛来提高一下编程技能 xff0c 同时做做运动 他收