首页 > 其他分享 >二分(离散化/哈希)

二分(离散化/哈希)

时间:2024-12-28 10:40:55浏览次数:1  
标签:二分 map int 离散 num mp 哈希 区间 inf

题目 : 链接: https://ac.nowcoder.com/acm/problem/207053

题意:

简单来说就是每次猜值,根据反馈判断答案所在的区间,找区间重叠次数最多的那部分的重叠次数

思路:

若猜中,区间[num,num]次数+1
若猜大了 , 区间[-inf,num-1]次数+1
若猜小了 , 区间[num+1,inf]次数+1
在[-inf,inf]上使用差分+前缀和来求得最大重叠区间是不可行的
所以开一张map进行离散化处理,
通过map来进行差分+前缀和

知识点:

通过基于范围的循环(c++11/for auto)来遍历容器map,it.first->key it.second->val
map能开的长度范围非常长,<int,int>可以开到10^17这样子
没给赋值的键不会被遍历到

#include<bits/stdc++.h>
using namespace std;
int n;
const int inf=INT_MAX;
map<int,int>mp;
signed main()
{
	ios::sync_with_stdio(false),cin.tie(0);
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		int num;char ch;
		cin>>num>>ch;
		if(ch=='.'){
			mp[num]++;
			mp[num+1]--;
		}
		else if(ch=='+')
		{
			mp[-inf]++;
			mp[num]--;
		}
		else 
		{
			mp[num+1]++;
		}
	}
	int temp=0;
	int ans=0;
	for(auto it :mp)
	{
		temp+=it.second;
		ans=max(ans,temp);
	}
	cout<<ans;	
	return 0;
}


标签:二分,map,int,离散,num,mp,哈希,区间,inf
From: https://www.cnblogs.com/benscode/p/18637247

相关文章

  • 实数二分
    当二分查找的区间是一个实数域时,称之为实数二分。实数二分的算法思想没有变化,但时因为实数和整数不同,整数是离散的,可以逐一枚举,区间中除了首尾边界外,每个整数都有一个前驱和后驱;实数是连续的,所以实现方式和整数二分有所不同。常见的形式是通过确定好精度prec(le-6,le-8等),以left+p......
  • Leetcode刷题第一天-二分查找
    https://leetcode.cn/problems/sqrtx/?envType=problem-list-v2&envId=binary-searchclassSolution:defmySqrt(self,x:int)->int:ifx<0:returnNone#左闭右闭区间[0,x]#求算数平方根,a*a=x,所以a<=x/2#判断x/2的平方和x的大小,......
  • 二分香农(范诺编码)——MATLAB实现
    本文通过MATLAB实现了二分香农(范诺编码),部分代码如下:clear;clc;%%图像读取处理pic=[1005656651282142220010010010065];hdz=[10056651282142135200];p=[0.380.200.140.110.080.040.030.02];num=length(pic);m=1;n=num;%%图像编码[p,c]=so......
  • 通过在 组策略管理控制台 中配置 AppLocker,可以非常有效地限制 PowerShell 脚本的执行
    在组策略管理控制台(GroupPolicyManagementConsole,GPMC)中配置AppLocker,可以有效地限制和控制哪些应用程序(包括PowerShell脚本)可以在计算机上执行。这是一种通过白名单策略确保只有已批准的应用程序能够运行的强大安全措施。配置AppLocker的步骤:1. 打开组策略管理控制......
  • c语言实现重要算法二分查找和归并排序
    如有错误,请大佬指正,谢谢!前言二分查找和归并排序在c语言的算法学习中尤为重要,学会掌握这两种方法可以帮助我们解决数组排序和数组某元素查找的问题,尤其是在处理数据较多的时候。目录文章目录前言一、介绍一下二分查找和归并排序的概念和优点二、二分查找的实现三.归并......
  • 数据结构(哈希表(下)方法讲解)
    前言:在前一部分中,我们探讨了哈希表的基本原理、设计思想、优势与挑战,并了解了它在实际项目中的应用场景。哈希表作为一种高效的数据结构,在查找、插入和删除等操作上具有显著优势,但要真正掌握它的使用,深入理解其操作方法是至关重要的。本部分将专注于哈希表的方法讲解。哈希......
  • 数据结构(哈希表(中)纯概念版)
    前言哈希表(HashTable)是计算机科学中的一个基础而重要的数据结构,它广泛评估各种算法和系统中,尤其是在需要快速查找、插入和删除操作的场景中。由于其O(1)的平均时间复杂度,存储表在性能要求较高的应用中表现得非常出色。它不仅提供了极快的访问速度,还具备灵活的键值对存储......
  • 二叉树和哈希表
    二叉树二叉树是每个节点最多有两个子树的树结构,通常子树被称作“左子树”和“右子树”。二叉树的递归定义为:二叉树或者是一棵空树,或者是一棵由一个根节点和两棵互不相交的分别称作根的左子树和右子树所组成的非空树,左子树和右子树又同样都是二叉树。下面相关代码实现都利用了......
  • 二分查找
    704.二分查找-力扣(LeetCode)34.在排序数组中查找元素的第一个和最后一个位置-力扣(LeetCode)35.搜索插入位置-力扣(LeetCode)69.x的平方根-力扣(LeetCode)二分查找是一种在有序数组中查找特定元素的搜索算法。它通过比较数组中间元素与目标值来工作,从而将搜索范围缩小到......
  • java哈希存储--数据结构
    前言前面学习过的数组存储和链式存储都有一定的缺点,哈希存储结合了二者的优点。本文源代码网址:https://gitee.com/zfranklin/java/tree/master/dataStructure/src/com/njupt/hashhttps://gitee.com/zfranklin/java/tree/master/dataStructure/src/com/njupt/hash哈希......