算法竞赛里,哈希是常用算法,且往往会引入随机性(或者对于判题程序而言随机的行为)。 了解这些套路,并且讨论他们的碰撞概率,是非常有趣而且有帮助的一件事! 字符串 - 多项式哈希 字符集大小不限,对于任意字符串 \(S = (s_1, s_2, \dots s_n)\),我们为其构造一个多项式 \(H ...
上一篇 分拆数 - 入门 我们介绍了一些 DP 方法。实际上分拆数在表示为生成函数(形式幂级数)以后会非常牛!(还是背包!) 生成函数 可能有些同学不熟悉,所以我们从头介绍。考虑等比数列求和公式 \(1 + x^k + x^{2k} + x^{3k} \dots = \cfrac{1}{1 - x^ ...
找到以前在校内给学弟讲课用的课件,把文字版搬到这里来咧。欢迎大家提出建议或者批评! 分拆数(整数分拆)这个知识点可能用的次数不多,但是本身还是很有趣的: 可以使用 DP / 生成函数求解。 有时候和分析题目复杂度上界有关系。 和杨表有密切关系。 作为新青年,当然还是值得学习一下有木有! 分拆数 分拆 ...
洛谷链接 题面传送门 操作一和操作二是平凡的,大多数数据结构都支持插入和删除。 题目中的 \(\operatorname{lowbit}\) 即为二进制最低位 \(1\) 所在的位置,而 \(0\) 因为没有 \(1\) 所以可以理解为 \(\operatorname{lowbit}\) 在无穷远处 ...
字符集大小不限,有 \(n\) 个 不同的 字符串 \(s_i\),总长度为 \(S \ge n\),你可以任意构造。 如果 \(s_u\) 是 \(s_v\) 的子串,那么连一条有向边,这样的 DAG 边数 \(E\) 是 \(O(S^{4/3})\) 的,且是紧的。 在互联网上冲浪了一会儿,没有 ...
本文初步介绍了线段树 (Segment Tree),提供了一种 C++ 模板代码,并介绍了一些常用操作的实现方法。 线段树是 OI 中一种非常强大且泛用的数据结构,其目的在于在 $ O(\log n) $ 的时间内修改一个序列,在 $ O(\log n) $ 的时间内查找序列中的一些信息。 什么是线 ...
介绍了11个排序算法:冒泡排序、选择排序、插入排序、希尔排序、快速排序、堆排序、归并排序、计数排序、桶排序、基数排序、Tim排序。 ...
LeetCode Hot 100 速记 一、哈希 1. 两数之和 难度:简单 分类:哈希 原题:LeetCode 1. 两数之和 题面 给定一个整数数组 nums 和一个整数目标值 target,请在数组中找出和为 target 的两个整数,并返回它们的数组下标。 可以假设每种输入只会对应一个答案, ...
本文聚焦UDI编码中DI+PI的精准生成这一核心环节。DI是产品“法定身份证号”,不同规格、不同包装层级均须分配唯一DI;PI动态关联批号、序列号、生产日期等字段,格式严格——一个字段错位即可能导致整批不合规。传统手工填表方式下,DI编制易错、多包装层级关联混乱、注册证变更同步滞后,PI字段依赖人工... ...
条码生成是标签打印软件的核心功能。本文解析码尚云标签条码生成器的技术实现,涵盖码制支持范围、校验算法和输出质量保障。 ...
题意 https://codeforces.com/gym/102512/problem/G 给定长度为 \(N\) 的数组 \(a\),进行 \(Q\) 次询问 \((l,r)\)。 对任意区间 \([l,r]\),记长度 \(m=r-l+1\)。 定义前缀数组 \(\begin{cases} A ...
题意 \(N\) 个正整数按顺序依次加入到数列里,可以决定将这个数写在当前数列的最左边或最右边。写下的数列的可能的最长严格上升子序列的长度是多少,搞出这样的子序列有多少种。加入数列的方法或子序列下标不同则认为两子序列不同。 此题还出现在:「雅礼集训 2017 Day10」数列。 思路 我们考虑取出 ...
题意 给定 \(n\) 个节点的树,每个点有权值 \(a_i\)。另外给定 \(k\) 个互不相同的非负整数 \(b_1, \ldots, b_k\)。求满足下面条件的边集的数量: 把这些边从树中移除后,树的每个连通块内所有节点的异或和都属于集合 \(b\)。 多测,\(\sum n \le 10^ ...
题意 给定位数为 \(n-1\) 的两个正整数 \(A,B\),需要动态维护两数之和 \(C=A+B\)。有 \(q\) 次操作,每次操作可能为修改 \(A\) 或 \(B\) 的某一位,或者求此时 \(C\) 的某一位。 \(n,q \le 10^5\)。 思路 考虑分块的做法,按位数分成 \(\ ...
题意 给定正整数 \(n(n\leq 10^5)\),求出 \(1,2,\dots,n\) 的满足下面条件的子集的个数: 若 \(x\) 在该子集中,则 \(2x\) 和 \(3x\) 不能在该子集中。 思路 我们简化问题,如果不考虑 \(3x\) 的出现,只考虑 \(2x\)。那么我们发现对于序列 ...
题意 \(x_1, x_2, \ldots, x_n\) 为在 \([0,1]\) 之间均匀分布的随机实数变量。有 \(m\) 个条件,每个条件的形式为 \(x_i + x_j \le 1\) 或 \(x_i + x_j \ge 1\)。 求所有条件都被满足的概率,结果对 \(998\,244\,3 ...
题意 给定长度为 \(n\) 的序列 \(A\),求最大半公约数,其定义为最大正整数 \(g\),使序列中至少一半的数都能被 \(g\) 整除。 思路 根据经验,遇到这种过半数的题可以考虑随机化。由于序列中有至少一半的数是 \(g\) 的倍数,故当我们从序列中随机选取一个数时,其所有因子中存在答案的 ...
题意 给出一个长度为 \(n\) 的数组 \(a\) 和以下两种操作: \(1\ i\ x\):将 \(a_i\) 修改为 \(x\)。 \(2\ l\ r\ k\):询问在数组区间 \([l, r]\) 内是否每个出现过的正整数的出现次数都是 \(k\) 的倍数。 思路 我们考虑询问内容的必要条件 ...
做.NET 机器视觉、文档扫描时图像存在黑白椒盐噪点?均值、高斯滤波会模糊物体边缘。本文详解非线性中值滤波完整原理、时间复杂度与多套提速方案,提供零第三方依赖纯 C# 灰度图像实现,支持 3×3/5×5 自定义窗口,自带边缘复制填充逻辑,适配工业缺陷检测、CT 医学影像、老照片修复;本文为技术学习归... ...
AI时代,理解快速排序的不同思路 快速排序是实际应用中最快的通用排序算法,基于分治思想和分区策略。理解它的多种实现思路,不仅能帮你理解排序算法,更能让你在AI时代真正驾驭代码生成工具,写出有深度、有思考的程序。 为什么AI时代还要手写快排? AI可以几秒生成一段快排代码,但它并没有告诉你下面的3个问 ...