R2_A_Taming the Herd

2023-10-26

题面

Taming the Herd

Early in the morning, Farmer John woke up to the sound of splintering wood. It was the cows, and they were breaking out of the barn again!

Farmer John was sick and tired of the cows’ morning breakouts, and he decided enough was enough: it was time to get tough. He nailed to the barn wall a counter tracking the number of days since the last breakout. So if a breakout occurred in the morning, the counter would be 00 that day; if the most recent breakout was 33 days ago, the counter would read 33. Farmer John meticulously logged the counter every day.

The end of the year has come, and Farmer John is ready to do some accounting. The cows will pay, he says! But lo and behold, some entries of his log are missing!

Farmer John is confident that the he started his log on the day of a breakout. Please help him determine, out of all sequences of events consistent with the log entries that remain, the minimum and maximum number of breakouts that may have take place over the course of the logged time.

Input

The first line contains a single integer NN (1≤N≤1001≤N≤100), denoting the number of days since Farmer John started logging the cow breakout counter.

The second line contains NN space-separated integers. The iith integer is either −1−1, indicating that the log entry for day ii is missing, or a non-negative integer aiai (at most 100100), indicating that on day ii the counter was at aiai.

Output

If there is no sequence of events consistent with Farmer John’s partial log and his knowledge that the cows definitely broke out of the barn on the morning of day 11, output a single integer −1−1. Otherwise, output two space-separated integers mm followed by MM, where mm is the minimum number of breakouts of any consistent sequence of events, and MM is the maximum.

Example

input

4
-1 -1 -1 1

output

2 3

Note

In this example, we can deduce that a breakout had to occur on day 3. Knowing that a breakout also occurred on day 1, the only remaining bit of uncertainty is whether a breakout occurred on day 2. Hence, there were between 2 and 3 breakouts in total.

题目大意

J用数字记录下了奶牛什么时候进行破坏。比如1是代表1天前进行了破坏,0代表今天进行破坏。但是这个记录损坏了,出现了一些-1,-1可以代表任意数字。任务是求奶牛进行破坏的次数的最大值与最小值。如果这份记录有矛盾,则输出-1。

题目分析

根据那些大于0的数字,我们可以去确定一些-1的具体数值。那么我们可以由那些数字倒着推回来。每当我们得到一个大于0的数n,那么前n天的记录也就清楚了,唯一确定了。当前n天的中如果出现有0的出现,那么我们比如可以确定,这份记录有矛盾。

代码

#include <cstdio>
using namespace std;
const int maxn = 1e5;
typedef long long ll;
int arr[107];
int main(int argc, char const *argv[]) {
  int n;
  scanf("%d", &n);
  for(int i = 0; i < n; i++)
    scanf("%d", &arr[i]);
  arr[0] = 0;
  bool flag = false;
  for(int i = 0; i < n; i++){
    // printf("%d\n", i);
    if(flag) break;

    if(arr[i] > 0){
      if(i - arr[i] < 0){flag = true; break;}
      if(arr[i - arr[i]] > 0) {
        flag = true;
        break;
      }else{
        for(int j = i - arr[i], cnt = 0; j < i; j++, cnt++){
          if(arr[j] == 0 && j != i - arr[i]){flag = true; break;}
          arr[j] = cnt;
        }
      }
    }
  }
  if(flag)
    printf("%d\n", -1);
  else{
    int fu = 0, zero = 0;
    for(int i = 0; i < n; i++){
      if(arr[i] == 0)
        zero++;
      if(arr[i] == -1)
        fu++;
    }
    printf("%d %d\n", zero, zero + fu);
  }
  return 0;
}

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

R2_A_Taming the Herd 的相关文章

  • 如何禁用 Apache 中的目录列表

    Apache 是最流行的开源 Web 服务器之一 全球许多网站都在使用它 它的功能之一是能够在不存在索引文件时列出目录及其内容 此功能虽然对某些用途很方便 但可能会向公众公开有关网站结构或内容的敏感信息 在本文中 我们将引导您了解如何禁用
  • 如何在 Ubuntu 16.04 和 14.04 LTS 上安装 phpPgAdmin

    phpPg管理员是一个 Web 界面 用于以非常简单的方式访问和管理 PostgreSQL 数据库 我们可以轻松地创建新的数据库 数据库中的表 用户 存储过程等 此外 我们还可以执行PL pgSQL和其他存储过程 它还提供了从 Web 界面
  • ERROR 1114 (HY000): 表‘tablename’已满(解决方案)

    MySQL 是一种广泛使用的开源关系数据库管理系统 RDBMS 可实现高效的数据存储和检索 但是 用户偶尔可能会遇到错误 例如 ERROR 1114 HY000 The table table name is full 消息 当达到表的存储
  • 什么是Fish(友好交互式SHell)?

    鱼 或者 友好的交互式SHell 是一个 Unix shell 其设计重点是用户友好性和交互使用 它于 2005 年推出 由于其独特的功能 有用的默认设置以及对愉快的用户体验的关注 赢得了众多追随者 鱼的主要特征和特点 交互式自动完成 Fi
  • Unix/Linux 中什么是僵尸进程

    僵尸进程是指已完成执行但其父进程尚未终止并释放其资源的进程 在 Unix Linux 中 处于这种状态的进程被视为僵尸进程 这些进程会占用宝贵的系统资源 如果处理不当 可能会导致稳定性问题 以下是了解和处理 Unix Linux 中僵尸进程
  • 您绝对需要的 7 件在家办公必需品

    甚至在 COVID 19 大流行爆发之前 很多人就在家工作 然而 他们中的大多数人并不是全职在家工作 这就是为什么这种强制性的远程办公可能异常难以适应 虽然业务模式或工作实践的每次变化都需要一些时间来适应 但您需要记住 有很多方法可以稍微促
  • 在 Laravel 中设置文件权限的正确方法:详细教程

    Laravel 是一种流行的 Web 应用程序开发 PHP 框架 非常注重安全性 在 Laravel 的众多安全考虑因素中 正确设置文件权限至关重要 如果没有正确的权限 您的应用程序可能容易受到攻击 或者可能由于缺乏必要的访问权限而发生故障
  • 如何保护 Apache 中的特定 URL

    阻止用户访问特定网页有助于防止他们接触敏感信息 如果您将站点托管在 Apache 服务器上 则可以通过锁定特定 URL 来锁定站点 如果您只需要阻止访问单个页面 则可以锁定 URL 而无需锁定整个站点 使用 Apache 有多种方法可以做到
  • Bash 读取命令

    Bash 附带了许多内置命令 您可以在命令行或 shell 脚本中使用这些命令 在本文中 我们将探讨内置read命令 Bash read内置 read是一个 bash 内置命令 它从标准输入 或文件描述符 读取一行并将该行拆分为单词 第一个
  • 如何在 CentOS 8 上安装 Visual Studio Code

    视觉工作室代码是微软开发的开源 跨平台代码编辑器 它具有内置的调试支持 嵌入式Git控制 语法突出显示 代码完成 集成终端 代码重构和片段 本文介绍如何在 CentOS 8 上安装 Visual Studio Code 先决条件 这些说明假
  • 如何在 CentOS 8 上安装和使用 FFmpeg

    FFmpeg 是一个用于处理多媒体文件的免费开源工具集合 它包含一组共享的音频和视频库 例如libavcodec libavformat和libavutil 使用 FFmpeg 您可以在各种视频和音频格式之间进行转换 设置采样率 捕获流音频
  • 如何在 Debian 9 上安装和配置 Redis

    Redis 是一个开源内存键值数据存储 它可以用作数据库 缓存和消息代理 并支持各种数据结构 如字符串 哈希 列表 集合等 Redis 通过 Redis Sentinel 提供高可用性 包括监控 通知 自动故障转移 它还通过 Redis C
  • Python 列表排序

    对数据进行排序是使用 Python 时最常见的任务之一 例如 您可能希望按姓名对团队成员列表进行排序 或按优先级对项目列表进行排序 本文介绍了如何排序Python 中的列表 Python sort and sorted 在 Python 中
  • 如何在 Debian 9 上安装 TensorFlow

    TensorFlow是由 Google 构建的免费开源机器学习平台 许多组织都在使用它 包括 Twitter PayPal 英特尔 联想和空中客车公司 TensorFlow 可以在 Python 虚拟环境中安装在系统范围内 作为Docker
  • ​如何从 Ubuntu 16.04 升级到 18.04

    最新的 Ubuntu LTS 版本 Ubuntu 18 04 Bionic Beaver 于 2018 年 4 月 26 日发布 支持期为 5 年 直至 2023 年 4 月 在本教程中 我们将向您展示如何升级 Ubuntu 16 04 安
  • Netcat (nc) 命令及示例

    网络猫 或nc 是一个命令行实用程序 它使用 TCP 或 UDP 协议跨网络连接读取和写入数据 它是网络和系统管理员武器库中最强大的工具之一 被视为网络工具中的瑞士军刀 Netcat 是跨平台的 可用于 Linux macOS Window
  • 在 Ubuntu 20.04 上使用 Let's Encrypt 保护 Apache

    Let s Encrypt 是由互联网安全研究小组 ISRG 创建的证书颁发机构 它通过完全自动化的流程提供免费的 SSL 证书 旨在消除手动证书创建 验证 安装和续订 Let s Encrypt 颁发的证书自颁发之日起 90 天内有效 并
  • 如何在 CentOS 8 上安装 VirtualBox

    虚拟盒子是一个开源 跨平台的虚拟化平台 它支持多种来宾操作系统 包括 Linux 和 Windows 并允许您同时运行多个虚拟机 在本教程中 我们将解释如何在 CentOS 8 上安装 VirtualBox 在 CentOS 8 上安装 V
  • 在 CentOS 7 上使用 Let's Encrypt 保护 Apache

    Let s Encrypt 是由互联网安全研究小组 ISRG 开发的免费 自动化 开放的证书颁发机构 Let s Encrypt 颁发的证书自颁发之日起 90 天内有效 并且受到当今所有主要浏览器的信任 在本教程中 我们将介绍在运行 Apa

随机推荐

  • 如何在 Ubuntu 18.04 上安装 PostgreSQL

    PostgreSQL 或 Postgres 是一个开源通用对象关系数据库管理系统 PostgreSQL 具有许多高级功能 可让您创建复杂的 Web 应用程序 在本教程中 我们将向您展示如何在 Ubuntu 18 04 上安装 Postgre
  • 电脑开机后卡死,桌面图标点了没反应怎么办

    今天接到客户的电话 说一台台式办公PC出现故障 具体故障现象如下 电脑可以正常开机 开机后点击桌面上的所有图标都没反应 开始菜单可以点开 点开后里面的内容也无法点击打开 右键点击桌面下方启动栏可以点出来选项卡 但是点击选项卡里的内容无法打开
  • 写代码遇到Qt相关问题

    目录 qt clicked 函数 传递数据 QT读取文件个数 QT读txt数据并求出行数和列数 qt读写json 我的json文件 读写函数 换行和不换行的区别就是参数Indented和Compact的区别 把json写到文件中 QT信号槽
  • 低通滤波器算法实现_控制算法之超前-滞后补偿器(Lead_Lag Compensator)

    Lead Lag控制器主要从频域的角度来对被控系统进行校正 改善系统的频域特性 如相角裕度 幅值裕度以及灵敏度等 从而改善系统的稳定性及控制精度 是一种基于频率响应的校正方法 时域的卷积 频域的乘积 这句话很重要 深入理解 一 Lead L
  • flutter 防止widget rebuild(亲测有效2020篇)

    相比这个问题很多开发着都已经遇到了 头疼了很久了吧 我也是 网上搜到各种方法 试了还是不行 下面我举一下场景 跳转场景 页面A gt 页面B gt 页面C gt 页面D 从上面简单都例子 我很悲催的告诉大家不管我从哪个页面跳哪个页面 从B
  • Awk学习笔记

    Awk学习笔记 整理 Jims of 肥肥世家
  • windows下安装openssl的两种方式

    windows下按装openssl 第一种 第二种 因为工作需要第一次接触openssl 中间踩得坑实在是太多了 最后也算放弃了那种安装方式原则了一个比较简单的 第一种 第一种就是网上平常的说的方法 先下载 ActivePerl 5 24
  • 图文使用freetype渲染字体+字体颜色+字体大小

    freetype的介绍各种博客都有 可以搜索看看 freetype2 8的源码及编译出的库及头文件链接 https download csdn net download weixin 40550094 12117925 我这边就直接写dem
  • sql语句case when常用查询总结

    一 case when 语句语法逻辑 case when 是mySQL里面的控制流语句 和if then 的分支判断逻辑很相似 case when语句有两种 1 简单case when 2 case搜索函数法 简单case when只能处理
  • 大数据组件_Kafka学习

    Kafka学习 基本概念 1 Broker 每一台kafka机器节点就是一个broker 2 Producer 消息生产者 往kafka的topic写数据 3 Consumer 消息消费者 从kafka的topic读取数据 4 Topic
  • java生成大小写字母加数字的随机数

    小小的验证码的随机数生成 以前自己一直没有思考过 仔细想想其实实现起来并没有多难 只是自己没有想过这些东西的实现具体应该怎么做比较好 在自己思考后 参考了网上其他作者的一些代码 下面是具体的实现代码 public class Validat
  • LightGBM 原理、代码最全解读!

    来源 Microstrong 本文主要内容概览 1 LightGBM简介 GBDT Gradient Boosting Decision Tree 是机器学习中一个长盛不衰的模型 其主要思想是利用弱分类器 决策树 迭代训练以得到最优模型 该
  • 微信小程序如何访问本地的服务器,springboot2为例

    1 我们需要改一个配置就可以了 以springboot2的项目为例子 2
  • m.777lu.co/wap.php,MaliStore/app.wxss at master · kingpro/MaliStore · GitHub

    src url data font truetype charset utf 8 base64 AAEAAAALAIAAAwAwR1NVQrD s 0AAAE4AAAAQk9TLzJXBku4AAABfAAAAFZjbWFwX864igAA
  • 请问投稿中要求上传的author_SCI投稿过程中主要有哪些状态,持续时间大概多久?...

    原标题 SCI投稿过程中主要有哪些状态 持续时间大概多久 不同出版社旗下SCI杂志的投稿方式 过程以及状态有所区别 但是基本形式大致相同 我们掌握一种杂志的投稿及投稿状态 基本可以以一推百 不同杂志的审稿周期差异比较大 从几天到数月不等 甚
  • ElasticSearch字符串数组类型的精确查询与模糊查询(自定义分词后进行精确与模糊查询)

    一条数据中 有这样的一个字段Keyword Computational devices S models 现需要实现通过分号分词后来查询数据 查询规则如下 1 检索Computational 不区分大小写 时命中结果 2 检索Computa
  • linux中使用crontab设置定时任务

    1 crontab简介 crontab命令常见于 Unix和类Unix 的操作系统之中 用于设置周期性被执行的指令 该命令从标准输入设备读取指令 并将其存放于 crontab 文件中 以供之后读取和执行 crontab储存的指令被守护进程激
  • docker 安装 elasticsearch和kibana(亲测可行)

    1 版本可自己更换 docker pull elasticsearch 6 6 1 2 创建本地挂在目录 mkdir p usr share elasticsearch share config mkdir p usr share elas
  • 用Python完成寻找水仙花数

    首先说一下我是Python的初学者 如果有任何不正确或可以改进的地方 请大家多多包容 所谓 水仙花数 是指一个三位数 其各位数字的立方和等于该数本身 例如153 1 3 5 3 3 3 理解了题意后我们就可以明白找到水仙花的重点就在于将一个
  • R2_A_Taming the Herd

    题面 Taming the Herd Early in the morning Farmer John woke up to the sound of splintering wood It was the cows and they we