牛客——二分(差分数组前缀和)

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
 

题目描述

我们刚刚学了二分查找——所谓二分查找就是在一堆有序数里找某个符合要求的数。在学完二分查找之后如果让你玩猜数游戏(裁判选定一个目标数字,你说一个数裁判告诉你是高了还是低了直到你猜到那个数)的话,显然你会用二分的方式去猜。

但是不是每一个玩猜数游戏的人都知道二分是最好,甚至一个健忘的玩家都有可能在得到裁判回答的下一个瞬间就忘了他之前问了什么以及裁判的回答),而现在更可怕的是,这个告诉你猜的数是高还是低的裁判他也很健忘,他总是薛定谔的记得这个目标数字,也就是说他的回答有可能出错。我们已经不关心这个不靠谱的游戏本身了,我们更关心裁判这个薛定谔的记得到底有几个是记得......

现在给出这个健忘的玩家的所有猜测和裁判的所有回答,问裁判最多能有多少次是记得目标数字的,即裁判的回复是符合情况的。

输入描述:

 

第一行包含一个正整数n,表示裁判的回答数(也是玩家的猜数次数)。

接下来n行,首先是猜的数,然后是一个空格,然后是一个符号。符号如果是“+”说明猜的数比答案大,“-”说明比答案小,“.”说明猜到了答案。

输出描述:

包含一个正整数,为裁判最多有多少个回答是正确的。

#include<bits/stdc++.h>
using namespace std;
const int inf=INT_MAX;
int main()
{int n,x;char c;map<int,int>mp;cin>>n;while(n--){cin>>x>>c;if(c=='.') mp[x]++,mp[x+1]--;if(c=='+') mp[-inf]++,mp[x]--;if(c=='-') mp[x+1]++,mp[inf]--;}int h=-inf,num=0;for(auto s:mp){num+=s.second;h=max(num,h);}cout<<h<<endl;return 0;
}

注意:这里不能用数组存储,因为数组的下标是从0开始,而这里要从负无穷大开始 ,用关联容器map。

详解可见:牛客 二分_csdn牛客二分-CSDN博客

另外,补充一下:

1.map<int, int> mp 是一个 C++ 中的容器,它是一种关联容器,用于存储键值对(key-value pairs),其中的键和值都是整数类型。它基于红黑树(Red-Black Tree)实现,可以实现快速的插入、删除和查找操作。

在这个容器中,每个键只能出现一次,如果要插入一个已经存在的键,则会覆盖原有的值。mp 是一个变量名,你可以根据实际情况自行命名。

你可以使用 map 容器来解决一些需要按照键进行排序并且快速查找的问题。例如,可以使用 map 容器来统计元素的频次,或者按照键的顺序遍历元素等。

下面是一些常见的 map 容器的操作示例:

  • 插入键值对:mp[key] = value;
  • 查找键对应的值:mp[key]
  • 删除键值对:mp.erase(key);
  • 遍历容器中的键值对:使用迭代器进行遍历

2.差分数组的前缀和是指对差分数组进行前缀和运算后得到的新数组。差分数组是指对原始数组的相邻元素进行差分运算得到的数组。

假设原始数组为 a,差分数组为 d,前缀和数组为 s,则有以下关系:

  • d[i] = a[i] - a[i-1],其中 1 <= i < n(注意:对于差分数组 d,下标从 1 开始,与原始数组的下标对应)。
  • s[0] = 0,即前缀和数组的第一个元素为 0。
  • s[i] = d[1] + d[2] + ... + d[i] = a[i],其中 1 <= i <= n

通过对差分数组进行前缀和运算,可以得到原始数组。而原始数组经过差分运算得到的差分数组,则可以通过对差分数组进行前缀和运算还原出原始数组。

差分数组的前缀和可以用于高效地进行区间更新操作。通过对差分数组进行前缀和运算,可以得到原始数组,然后在原始数组中进行区间更新操作,再生成新的差分数组。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/442886.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙开发之app快速备案流程

App备案快速入门知识 1、 准备材料 1、阿里云APP &#xff08;用于人脸识别认证&#xff09; 2、身份证原件&#xff08;用于拍照上传身份证照片&#xff0c;阿里云APP不支持本地上传照片&#xff0c;只能拍照&#xff09; 3、一个主办单位负责人联系电话&#xff08;该号码必…

带大家做一个,易上手的家常香干炒韭菜

两瓣蒜 一块生姜 生姜切小片 和 四个左右干辣椒一起装起来 蒜切小片 装起来 准备一把韭菜 韭菜 切成段 准备两个香干豆腐 香干豆腐切片备用 起锅烧油 热后 下入生姜 干辣椒炒香 然后下入香干翻炒 翻炒均匀后 下入 半勺老抽 一勺生抽 适量蚝油 翻炒均匀后 下入蒜片 …

在 WLC上配置WPA2-Enterprise WLAN

实验大纲 第1部分&#xff1a;创建一个新的WLAN 第1步&#xff1a;创建一个新的VLAN接口 第2步&#xff1a;配置WLC让它使用RADIUS服务器 第3步&#xff1a;创建一个新的WLAN 第4步&#xff1a;配置WLAN安全策略 第2部分&#xff1a;配置DHCP范围和SNMP 第1步&#xff1…

MySQL十部曲之一:MySQL概述及手册说明

文章目录 数据库、数据库管理系统以及SQL之间的关系关系型数据库与非关系型数据库MySQL程序系统变量系统状态变量SQL模式MySQL数据目录手册语法约定 数据库、数据库管理系统以及SQL之间的关系 名称说明数据库&#xff08;Database&#xff09;即存储数据的仓库&#xff0c;其本…

python学习21

前言&#xff1a;相信看到这篇文章的小伙伴都或多或少有一些编程基础&#xff0c;懂得一些linux的基本命令了吧&#xff0c;本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python&#xff1a;一种编程语言&…

Java项目:基于SSM框架实现的家纺用品销售管理系统(ssm+B/S架构+源码+数据库+毕业论文)

一、项目简介 本项目是一套ssm814基于SSM框架实现的家纺用品销售管理系统&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试…

HarmonyOS应用开发者基础认证考试答案

HarmonyOS应用开发者基础认证考试答案 一、判断题 1.Ability是系统调度应用的最小单元&#xff0c;是能够完成一个独立功能的组件。一个应用可以包含一个或多个Ability。 正确(True) 2.所有使用Component修饰的自定义组件都支持onPageShow&#xff0c;onBackPress和onPageHide…

聚合支付,实现支付宝微信扫二维码直接跳转支付

具体要实现的功能&#xff1a;手机支付宝或微信扫描同一个二维码&#xff0c;跳转各自的支付 微信使用&#xff1a;jsapi支付 支付宝&#xff1a;wappay 上篇已写了如何实现内网穿透调试就不多叙述 1.判断客户端类型&#xff0c;从request的中将user-agent拉取下来&#xf…

【音视频】http-flv直播分发协议的延迟效果

一、前言 直播电商和新型直播社交已成为风口&#xff0c;市场上主流APP有60%以上都会有直播的内容。以前是以文本和图片为主&#xff0c;当前视频和直播这类流式传输已经成为网络传输中的主要流量。 本文主要针对http-flv这个直播分发协议&#xff0c;测试在不同云产商的延迟…

数据结构——并查集

1.并查集的定义 并查集其实也是一种树形结构&#xff0c;在使用中通常用森林的方式来表示 并查集的逻辑结构其实就是集合 并查集一般可以通过双亲写法&#xff08;顺序结构&#xff09;来完成&#xff0c;即通过一个数组存储父亲结点的下标 int s[10005]; int main() {for(…

代码随想录算法训练营29期|day36任务以及具体安排

第八章 贪心算法 part05 435. 无重叠区间 class Solution {public int eraseOverlapIntervals(int[][] intervals) {Arrays.sort(intervals, (a,b)-> {return Integer.compare(a[0],b[0]);});if(intervals.length 1) return 0;int result 0;for(int i 1 ; i < interva…

spring整合mybatis的底层原理

spring整合mybatis的底层原理 原理&#xff1a; FactoryBean的自定义对象jdk动态代理Mapper接口对象 一、手写一个spring集成mybatis 目录结构&#xff1a; 1.1 入口类 public class Test {public static void main(String[] args) {AnnotationConfigApplicationContext co…