前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >ACM算法竞赛——离散化(模板)

ACM算法竞赛——离散化(模板)

原创
作者头像
战士小小白
发布于 2022-05-14 07:38:09
发布于 2022-05-14 07:38:09
38200
代码可运行
举报
运行总次数:0
代码可运行
代码语言:c
代码运行次数:0
运行
AI代码解释
复制
vector<int> alls; // 存储所有待离散化的值
sort(alls.begin(), alls.end()); // 将所有值排序
alls.erase(unique(alls.begin(), alls.end()), alls.end());   // 去掉重复元素

// 二分求出x对应的离散化的值
int find(int x) // 找到第一个大于等于x的位置
{
    int l = 0, r = alls.size() - 1;
    while (l < r)
    {
        int mid = l + r >> 1;
        if (alls[mid] >= x) r = mid;
        else l = mid + 1;
    }
    return r + 1; // 映射到1, 2, ...n
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
算法基础:离散化及模板详解
首先,离散化是指数值域非常大,例如 ,但是个数相对较少,例如只有 个, 但在我们的程序中需要通过这些数值作为下标,且依赖的是这些数值之间的顺序关系(当然通常这些数是有序的)。如果为了这 个数而开一个 的数组过于浪费空间,因此我们可以采用离散化的方法,将这些数映射到 上,这个过程就叫做离散化。
timerring
2022/11/22
1.3K0
算法基础:离散化及模板详解
算法基础学习笔记——⑤离散化\区间和并
6 、 − 10000 、 114514 、 1919 、 − 123 、 1919
命运之光
2024/03/20
1710
算法基础学习笔记——⑤离散化\区间和并
【简单】区间和(离散化方法)
假定有一个无限长的数轴,数轴上每个坐标上的数都是 \rm{0}。现在,我们首先进行 n 次操作,每次操作将某一位置 x 上的数加上 c。接下来,进行 m 次询问,每个询问包含两个整数 l 和 r ,你需要求出在区间 \left[ {l,r} \right] 所有数的和。
字节星球Henry
2021/08/09
6660
离散化思想详细讲解
1.什么是离散化 数据离散化是一个非常重要的思想。 为什么要离散化?当以权值为下标的时候,有时候值太大,存不下。 所以把要离散化的每一个数组里面的数映射到另一个值小一点的数组里面去。 打个比方,某个题
杨鹏伟
2020/09/10
9470
区间和(离散化+二分+前缀和)
假定有一个无限长的数轴,数轴上每个坐标上的数都是0。 现在,我们首先进行 n 次操作,每次操作将某一位置x上的数加c。 近下来,进行 m 次询问,每个询问包含两个整数l和r,你需要求出在区间[l, r]之间的所有数的和。
dejavu1zz
2020/10/23
6950
离散化算法
用户10604450
2024/03/15
980
离散化算法
【算法】双指针、位运算、离散化、合并区间
双指针的算法可以优化时间复杂度,双指针,指的是在遍历对象的过程中,不是普通的使用单个指针进行访问,而是使用两个相同方向( 快慢指针 )或者相反方向( 对撞指针 )的指针进行扫描,从而达到相应的目的。将双层暴力循环O(n^2)优化到O(n),所以双指针算法最核心的用途就是优化时间复杂度。双指针是比较常见的把,直接看例子既可以。
平凡的人1
2023/10/15
2200
【算法】双指针、位运算、离散化、合并区间
算法思想总结:哈希表
1、哈希表底层:通过对C++的学习,我们知道STL中哈希表底层是用的链地址法封装的开散列。
小陈在拼命
2024/06/02
1680
算法思想总结:哈希表
C++ 离散化算法
离散化是离散数学中的概念。离散化算法,指把无限空间中的离散数据映射到一个有限的存储空间中,并且对原数据进行有序索引化。主打压缩的都是精化。
一枚大果壳
2024/03/02
2140
C++ 离散化算法
ACM竞赛常用STL(二)之STL--algorithm
<algorithm>无疑是STL 中最大的一个头文件,它是由一大堆模板函数组成的。 下面列举出<algorithm>中的模板函数: adjacent_find / binary_search / copy / copy_backward / count / count_if / equal / equal_range / fill / fill_n / find / find_end / find_first_of / find_if / for_each / generate / generate_n / includes / inplace_merge / iter_swap / lexicographical_compare / lower_bound / make_heap / max / max_element / merge / min / min_element / mismatch / next_permutation / nth_element / partial_sort / partial_sort_copy / partition / pop_heap / prev_permutation / push_heap / random_shuffle / remove / remove_copy / remove_copy_if / remove_if / replace / replace_copy / replace_copy_if / replace_if / reverse / reverse_copy / rotate / rotate_copy / search / search_n / set_difference / set_intersection / set_symmetric_difference / set_union / sort / sort_heap / stable_partition / stable_sort / swap / swap_ranges / transform / unique / unique_copy / upper_bound 如果详细叙述每一个模板函数的使用,足够写一本书的了。还是来看几个简单 的示例程序吧。 示例程序之一,for_each 遍历容器:
xindoo
2021/01/22
9590
给球上色(线段树+离散化) - HDU 1199
假定待离散化的序列为a[n],b[n]是序列a[n]的一个副本,则对应以上三步为:
ACM算法日常
2019/01/02
1.3K0
《算法竞赛进阶指南》0x05 排序
个有限数值,并且与数值的绝对大小无关(只把这些数值作为代表,或只与它们的相对顺序有关)
一只野生彩色铅笔
2022/10/31
8470
盘点算法竞赛中C++常用的stl库函数
我们都知道,C++中有许多内置的库函数,我们可以直接调用它们,在蓝桥杯,ACM等比赛中,通过使用这些常用的库函数可以大大提高我们的效率,而不用自己去再重新去手写一些函数,那么本篇文章就为大家盘点了一些比较常用的库函数,并附带了例题帮助大家运用理解。
2的n次方
2024/10/15
6160
盘点算法竞赛中C++常用的stl库函数
LeetCode 周赛上分之旅 #41 结合离散化的线性 DP 问题
从 1 开始从小到大枚举,如果当前元素 cur 与已选列表不冲突,则加入结果中。为了验证是否冲突,我们使用散列表在 O(1) 时间复杂度判断。
用户9995743
2023/09/09
2810
STL 总结与常见面试题
为了建立数据结构和算法的一套标准,并且降低他们之间的耦合关系,以提升各自的独立性、弹性、交互操作性(相互合作性,interoperability),诞生了STL。
C语言与CPP编程
2020/10/16
9340
LeetCode周赛290,什么?你不会树状数组,这太不公平了
我们老规矩来看LeetCode周赛第290场。这一场比赛的赞助商是华为,应该说是目前为止赞助商当中规模最大的公司了。
TechFlow-承志
2022/09/21
4890
LeetCode周赛290,什么?你不会树状数组,这太不公平了
牛客国庆集训派对Day6 E-Growth(离散化DP)
链接:https://ac.nowcoder.com/acm/contest/206/E
ACM算法日常
2019/06/24
5300
详解树状数组(C/C++)
树状数组(Binary Indexed Tree,简称BIT或Fenwick Tree)是一种用于高效处理数据序列的算法数据结构。它能够支持两个主要操作:单点更新和区间求和,这两个操作的时间复杂度都能达到O(log n),其中 n 是数据序列的长度。树状数组非常适合处理那些需要频繁更新和查询区间和的问题。
摆烂小白敲代码
2024/09/23
2300
详解树状数组(C/C++)
ACM算法基础
N3/6-N2/2+N/3 ~ N3/6。使用 ~f(N) 来表示所有随着 N 的增大除以 f(N) 的结果趋近于 1 的函数。
爱撸猫的杰
2019/03/29
1.9K0
『ACM-算法-离散化』信息竞赛进阶指南--离散化
当以权值为下标的时候,有时候值太大,存不下。 所以把要离散化的每一个数组里面的数映射到另一个值小一点的数组里面去。
风骨散人Chiam
2020/10/28
7010
相关推荐
算法基础:离散化及模板详解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验