竞赛规模 Benchmark¶
以下是固定输入的实测用时。每项单独运行,输入种子为 1;预热 1 次后取 5 次运行的中位数。输入生成不计时,构建、计算、结果消费及临时对象销毁计入时间。
规模按常见竞赛题目的数据范围选取,每项参数列于下表。
持久化仿射线段树、并查集与队列保留全部版本;每 8 次操作从随机历史版本分支 1 次,其余延续最新版本。数据结构测试的数值默认取 \([0,10^9)\);区间由两个随机端点确定。Beats 的初值取 \([0,10^6)\),更新参数取 \([-10^6,10^6]\)。
动态树的父亲从编号较小的点中选取,换父亲时保持此约束;二维、三维坐标与查询端点取 \([0,10^9)\)。可排序线段树使用不同的键,替换时分配新键,聚合值为模 998244353 的仿射函数。
区间不同数测试的值域为 \([0,\max(1,\lfloor n/8\rfloor))\)。严格众数测试把序列分为三段,每段以 \(3/4\) 的概率取该段编号,其余取 \([0,8)\) 的值;更新采用相同分布。位集初值与掩码的各位等概率为 0 或 1,移位量取 \([1,1000]\)。
哈希表的输入键固定,哈希函数保留库默认的进程随机盐。矩形仿射更新测试依次为每个点赋值,尚未激活的点不受之前的矩形更新影响。
带偏移哈希表每次合并前,左表偏移取 \([0,10^9)\),右表偏移取 \((-10^9,0]\);查询键取 \([0,n)\)。
区间并查集第 \(i\) 步随机选 \(1\le\ell\le i\) 和 \(0\le a\le i-\ell\),合并 \([a,a+\ell)\) 与 \([i-\ell+1,i+1)\),\(1\le i<n\);每步恰好把一个新点加入已连通前缀。
分数测试的第一个分子取 \([-10^9,10^9]\),两个分母及第二个分子取 \([1,10^9]\);约分后的结果均可用 64 位有符号整数表示。
一般多点求值和插值使用打乱顺序的 \(1,\ldots,n\);多项式系数、给定点值及一次因子的根随机取模 998244353。
Stirling 查询的行下标 \(a\) 随机取 \([0,10^{18}]\);列下标 \(b\) 交替取 \([0,a]\) 中的随机值和 \(a-\min(a,d)\),其中 \(d\) 随机取 \([0,p)\)。
\(q\)-组合数查询先在 \([0,n]\) 取 \(a\),再在 \([0,a]\) 取 \(b\);第一项固定为 \((n,\lfloor n/2\rfloor)\),确保预处理覆盖整个参数范围。
线性递推的初值与系数随机取模 998244353,最后一个递推系数固定为 1;Berlekamp–Massey 的输入为独立随机序列。
矩阵元素随机取模 998244353;方程组先生成随机解 \(x\),再以 \(b=Ax\) 构造右端,生成输入不计时。
| 测试 | 数据规模 \(n\) | 用时(ms) | 测试内容 |
|---|---|---|---|
fenwick |
200,000 | 6.957 | 建立 \(n\) 个位置的树,单点加和区间求和各 \(n\) 次 |
sparse_table |
200,000 | 14.644 | 构建 \(n\) 个数的 RMQ,查询 \(n\) 次 |
segtree |
200,000 | 24.953 | 构建 \(n\) 个数;交替执行单点赋值与区间求和,各 \(n\) 次 |
lazy_segtree |
200,000 | 324.044 | 构建 \(n\) 个数;区间仿射变换与求和各 \(n\) 次,模 998244353 |
segment_tree_beats |
200,000 | 278.774 | 构建 \(n\) 个数;区间加、chmin、chmax、求和交替,共 \(n\) 次 |
sparse_segtree |
200,000 | 103.960 | 坐标域 \([0,10^9)\);单点赋值与区间求和各 \(n\) 次 |
disjoint_sparse_table |
200,000 | 16.026 | 构建 \(n\) 个数的不相交稀疏表,区间求和 \(n\) 次 |
wavelet_matrix |
200,000 | 224.503 | 构建 \(n\) 个数;区间第 \(k\) 小与小于阈值的计数各 \(n\) 次 |
persistent_order_statistics |
200,000 | 237.258 | 构建 \(n\) 个前缀版本,区间第 \(k\) 小查询 \(n\) 次 |
persistent_affine_segtree |
50,000 | 84.269 | 构建 \(n\) 个数;仿射更新 \(n\) 个版本,新旧版本各求和 \(n\) 次,模 998244353 |
persistent_dsu |
100,000 | 90.657 | \(n\) 个点;合并产生 \(n\) 个版本,新旧版本各查询连通性 \(n\) 次 |
rollback_dsu |
200,000 | 12.679 | \(n\) 个点;合并 \(n\) 次后逐次撤销,每次合并与撤销后查询连通性 |
potentialized_dsu |
200,000 | 5.605 | \(n\) 个点;添加一致的势差约束与查询势差各 \(n\) 次 |
binary_trie |
200,000 | 199.673 | 插入 \(n\) 个 30 位数;删除、插入、最小 XOR 查询各 \(n\) 次 |
fastset |
200,000 | 3.079 | 值域 \([0,n)\);切换元素是否存在、前驱查询、后继查询各 \(n\) 次 |
implicit_lazy_treap |
200,000 | 1031.917 | 构建长为 \(n\) 的序列;翻转、仿射更新、删除后插入、区间求和交替,共 \(n\) 轮 |
persistent_queue |
200,000 | 19.337 | 从空队列产生 \(n\) 个版本;每三次操作两次入队、一次出队,空队列改为入队 |
double_ended_heap |
200,000 | 35.388 | 插入 \(n\) 个数;交替弹出最小值或最大值,再插入,共 \(n\) 轮 |
sliding_window_aggregation |
200,000 | 0.502 | 扫描 \(n\) 个数,查询所有宽度为 \(\min(n,1000)\) 的窗口最小值 |
link_cut_tree |
100,000 | 350.254 | 构建 \(n\) 点树;换父亲、单点赋值、路径求和各 \(n\) 次 |
sparse_fenwick_2d |
100,000 | 406.420 | 注册并构建 \(n\) 个二维坐标;单点加与矩形求和各 \(n\) 次 |
kd_tree |
200,000 | 148.322 | 构建 \(n\) 个二维点的 KD-tree,最近邻查询 \(n\) 次 |
sortable_segment_tree |
50,000 | 390.441 | 构建 \(n\) 个不同键的序列;升序、降序、单点替换交替,共 \(n\) 轮,每轮查询区间函数复合 |
top_k_sum |
200,000 | 228.697 | 插入 \(n\) 个数;替换一个数、调整 \(k\) 并查询前 \(k\) 大之和,共 \(n\) 轮,\(k=\lfloor n/2\rfloor\) 与 \(\lfloor n/2\rfloor+1\) 交替 |
point_set_range_freq |
200,000 | 190.358 | 构建 \(n\) 个数;单点赋值与区间指定值出现次数查询各 \(n\) 次,值域 \([0,1024)\) |
static_range_distinct |
200,000 | 29.009 | \(n\) 个数,离线查询 \(n\) 个区间的不同数个数 |
mo_distinct |
100,000 | 35.484 | \(n\) 个数,用莫队回答 \(n\) 个区间的不同数个数,包含查询排序 |
dynamic_range_majority |
200,000 | 135.096 | 预处理 \(n\) 个初值与 \(n\) 次待更新值;交替单点赋值与区间严格众数查询,各 \(n\) 次 |
dynamic_bitset |
200,000 | 13.217 | 构建两个 \(n\) 位的位集;左移、与固定掩码异或、统计置位数,共 1000 轮 |
rectangle_sum |
200,000 | 140.707 | \(n\) 个带权二维点,离线回答 \(n\) 个矩形求和查询 |
offline_rectangle_add_rectangle_sum |
100,000 | 117.342 | \(n\) 个带权矩形,离线回答 \(n\) 个矩形覆盖权值总和查询,模 998244353 |
mo_with_updates_distinct |
100,000 | 851.927 | \(n\) 个数,交替单点赋值与区间不同数查询各 \(n\) 次;带修改莫队,包含预处理与排序 |
static_range_inversions |
100,000 | 627.122 | 构建 \(n\) 个数的静态区间逆序对结构,查询 \(n\) 次 |
leftist_heap |
200,000 | 63.569 | 建立 \(n\) 个单元素左偏堆,逐层两两合并共 \(n-1\) 次,再依次弹出 \(n\) 个最小值 |
cdq_dominance |
200,000 | 195.905 | \(n\) 个三维点,统计各坐标均不大于当前点的点数,包含自身与重复点 |
hashmap |
200,000 | 62.524 | 预留容量并插入 \(n\) 个 64 位键;赋值、已有键查询、独立键查询、删除、重新插入各 \(n\) 次 |
range_linear_add_range_min |
100,000 | 684.930 | 构建 \(n\) 个数;区间加 \(ai+b\) 与独立区间最小值查询各 \(n\) 次,\(\lvert a\rvert\le1000,\lvert b\rvert\le10^6\) |
rectangle_affine_kd_tree |
50,000 | 1636.557 | 预处理 \(n\) 个二维点,初始激活前一半;点赋值、矩形仿射更新与独立矩形求和各 \(n\) 次,模 998244353 |
static_range_mode |
100,000 | 194.480 | 构建 \(n\) 个数;查询 \(n\) 个区间的众数及出现次数,值域 \([0,\max(1,\lfloor n/8\rfloor))\) |
sparse_range_affine_sum |
50,000 | 121.712 | 初值为零,坐标域 \([0,10^9)\);区间仿射更新与独立区间求和各 \(n\) 次,模 998244353 |
range_set_range_product |
200,000 | 234.351 | 构建 \(n\) 个仿射函数;区间赋值与独立区间函数复合各 \(n\) 次,模 998244353 |
static_range_xor_basis |
100,000 | 23.409 | 构建 \(n\) 个 30 位数;区间最大 XOR 与可表示性查询各 \(n\) 次,短区间与任意区间交替,短区间长度不超过 30 |
static_range_lis_query |
100,000 | 235.742 | 预处理长为 \(n\) 的随机排列,查询 \(n\) 个区间的严格 LIS 长度 |
mergeable_frequency_tree |
100,000 | 203.915 | 建立 \(n\) 棵单元素频次树并逐层合并;区间计数、分裂、第 \(k\) 小查询及合并回原树,共 \(n\) 轮,值域 \([0,n)\),空树跳过第 \(k\) 小查询 |
fractional_cascading |
200,000 | 253.710 | 从总长 \(n\) 的 \(\min(n,32)\) 个有序数组构建;查询 \(n\) 次在所有数组中的 lower_bound,输入排序不计时 |
rollback_mo_weighted_frequency |
100,000 | 204.942 | \(n\) 个数、\(n\) 个区间;回滚莫队求每个区间内 \(\max_v v\cdot\mathrm{freq}(v)\),值域 \([1,\max(1,\lfloor n/8\rfloor)]\),包含查询排序 |
range_parallel_dsu |
200,000 | 63.746 | \(n\) 个带权点;逐点扩展连通前缀,执行 \(n-1\) 次等长区间对应合并,每次返回同分量无序点对的权值乘积和,模 998244353,包含初始化 |
fenwick_2d |
1,000 | 36.014 | 构建 \(n\times n\) 的全零网格;随机单点加与独立矩形求和各 \(200n\) 次 |
implicit_treap |
200,000 | 1026.339 | 构建 \(n\) 个仿射函数的序列;翻转、单点赋值、删除后插入交替,共 \(n\) 轮,每轮查询区间函数复合,模 998244353 |
potentialized_group_dsu |
200,000 | 15.841 | \(n\) 个点,势为模 998244353 的行列式为 1 的 \(2\times2\) 矩阵;添加一致的相对变换约束与独立势差查询各 \(n\) 次 |
common_interval_decomposition_tree |
200,000 | 11.782 | 构建长为 \(n\) 的随机排列的公共区间分解树,包含遍历结果节点 |
offline_rectangle_add_point_get |
200,000 | 177.570 | \(n\) 个带权矩形,离线回答 \(n\) 个点的覆盖权值之和 |
prefix_sum |
200,000 | 2.467 | 构建 \(n\) 个数的前缀和,区间求和 \(n\) 次 |
block_range_sum |
200,000 | 48.613 | 建立 \(n\) 个零的分块数组;单点加与独立区间求和各 \(n\) 次 |
range_add_point_get |
200,000 | 12.987 | 建立 \(n\) 个零的差分树状数组;区间加与独立单点查询各 \(n\) 次 |
cartesian_tree |
200,000 | 2.103 | 构建 \(n\) 个数的最小笛卡尔树,包含遍历根、父亲与左右孩子 |
consecutive_segment |
200,000 | 151.565 | 从 \(n\) 个数逐点建立连续段结构;区间赋值与独立单点查询各 \(n\) 次,赋值左端点均匀取 \([0,n)\),长度均匀取 \([1,\min(100,n-l)]\);包含消费被覆盖段 |
tag_hashmap |
200,000 | 230.161 | 建立 \(n\) 个单元素哈希表,键取 \([0,\max(1,\lfloor n/8\rfloor))\);逐层两两合并前各加整体偏移,重复键取最小值,合并后释放来源表;最后查询 \(n\) 次并遍历结果 |
dijkstra |
200,000 | 65.346 | \(n\) 个顶点、\(4n\) 条有向边,单源最短路 |
convex_polygon |
200,000 | 41.470 | 按边界顺序给出 \(n\) 个点 \((x,x^2)\),\(x=i-\lfloor n/2\rfloor,0\le i<n\);构建后作 \(n\) 次点定位,查询横坐标取同一范围的整数,纵坐标取 \([0,\lfloor n^2/4\rfloor]\) 中整数,行列式使用有符号 128 位整数 |
circle_overlap_area |
200,000 | 92.145 | 计算 \(n\) 对圆盘的相交面积,圆心各坐标和半径独立取整数 \([0,10^6]\),运算使用 long double |
circle_polygon_area |
200,000 | 35.741 | 圆心在原点、半径 1000 的圆盘与 \(n\) 边形求交面积;顶点极角等间隔、半径独立取整数 \([800,1200]\),运算使用 long double |
convex_hull |
200,000 | 23.168 | \(n\) 个随机整数点,各坐标取 \([-10^9,10^9]\);计算严格凸包,包含排序和结果遍历,坐标运算使用有符号 128 位整数 |
convex_hull_boundary |
200,000 | 19.575 | 打乱顺序的 \(n\) 个点 \((x,x^2)\),\(x=i-\lfloor n/2\rfloor,0\le i<n\),全部位于凸包边界;包含排序和结果遍历,坐标运算使用有符号 128 位整数 |
minkowski_sum |
200,000 | 46.052 | 两个各有 \(n\) 个随机整数点的集合,各坐标取 \([-10^9,10^9]\);求凸包 Minkowski 和,包含凸包预处理和结果遍历,坐标运算使用有符号 128 位整数 |
minkowski_sum_boundary |
200,000 | 41.901 | 两个各有 \(n\) 个点 \((x,x^2)\) 的集合,\(x=i-\lfloor n/2\rfloor,0\le i<n\),分别打乱顺序;求 Minkowski 和,包含凸包预处理和结果遍历,坐标运算使用有符号 128 位整数 |
closest_pair |
200,000 | 40.564 | \(n\) 个随机整数点,坐标取 \([-10^9,10^9]\);求最近点对,包含排序与分治 |
furthest_pair |
200,000 | 19.474 | \(n\) 个随机整数点,坐标取 \([-10^9,10^9]\);求最远点对,包含排序、凸包与旋转卡壳 |
rectangle_union_area |
200,000 | 391.882 | \(n\) 个半开轴对齐矩形;横纵端点独立取整数 \([0,10^9]\) 后排序;计算并面积,包含坐标压缩、事件排序与扫描线 |
triangle_point_counter |
600 | 58.835 | \(n\) 个查询顶点和 \(n\) 个待统计点,各坐标独立取整数 \([0,10^6]\);预处理后随机查询 \(n^2\) 个三角形的严格内部点数 |
triangle_counter_grid |
600 | 53.823 | \(n\) 个查询顶点和 \(n\) 个待统计点,各坐标独立取整数 \([0,31]\),允许重复;预处理后随机查询 \(n^2\) 个三角形的严格内部点数 |
euclidean_mst |
200,000 | 281.251 | \(n\) 个随机整数点,坐标取 \([-10^9,10^9]\);通过 Delaunay 候选边求欧氏最小生成树,包含点排序、三角剖分和 Kruskal |
circumcircle |
200,000 | 4.062 | \(n\) 组三点外接圆查询;每组取随机平移 \([-10^9,10^9]^2\),三个点的各坐标偏移取整数 \([-1000,1000]\),共线时返回空结果 |
minimum_enclosing_circle |
200,000 | 28.171 | \(n\) 个随机整数点,坐标取 \([-10^9,10^9]\);计算最小覆盖圆,包含随机打乱与整数包含判定 |
minimum_circle_boundary |
200,000 | 29.188 | \(n\) 个随机整数点,坐标取 \([-10^9,10^9]\);构造最小覆盖圆并精确标记圆周上的输入点,包含随机打乱与边界扫描 |
convex_layers |
100,000 | 345.528 | \(n\) 个互异随机整点,坐标取 \([-10^9,10^9]\);计算每个点所属的凸包层,包含排序与逐层删除边界 |
convex_layers_grid |
100,000 | 76.426 | 按行取宽为 \(\max(1,\lfloor\sqrt n\rfloor)\) 的网格前 \(n\) 个整点,乱序输入;计算每个点所属的凸包层,包含排序与逐层删除边界 |
half_plane_intersection |
100,000 | 48.955 | 半径 1000 的圆周分成 \(n\) 个等角区间,每段中间 80% 随机取一点,连接相邻点形成半平面;乱序输入,全部边界有效,包含排序与交集面积计算 |
half_plane_redundant |
100,000 | 44.828 | \(n\) 个包含原点的随机半平面,方向均匀,边界到原点的距离取整数 \([1,1000]\);另加 \([-2000,2000]^2\) 边界,包含排序与交集面积计算 |
parallel_binary_search |
200,000 | 154.689 | \(n\) 个点按随机顺序加入一棵随机树的 \(n-1\) 条边;用并查集与整体二分求 \(n\) 对点首次连通的边前缀长度,包含每轮重建并查集 |
larsch |
200,000 | 23.209 | 在线计算 \(n\) 个 DP 状态,\(d_0=0\),\(d_i=\min_{0\le j<i}\{d_j+(s_i-s_j)^2+10^5\}\);\(s_0=0\),前缀增量独立取 \([1,10]\),输入生成不计时 |
smawk |
200,000 | 9.742 | 求隐式 \(n\times n\) Monge 矩阵 \(a_{ij}=(x_i-y_j)^2+b_j\) 的所有行最小值位置;两个非降坐标序列的增量独立取 \([0,10]\),列偏置取 \([-5\cdot10^5,5\cdot10^5]\),输入生成不计时 |
monotone_cht |
200,000 | 2.186 | 单调 CHT 交替加入直线与查询最小值,各 \(n\) 次;第 \(i\) 次斜率 \(n-i\)、横坐标 \(n-2i\),\(0\le i<n\),截距随机取 \([-10^6,10^6]\) |
dynamic_cht |
200,000 | 10.854 | 动态直线容器交替加入直线与查询最小值,各 \(n\) 次;斜率、截距与查询横坐标独立随机取 \([-10^6,10^6]\) |
cht_xy |
200,000 | 29.984 | 动态加入 \(n\) 个二维点,每次加入后查询一个独立方向的最小、最大点积;点与方向的各分量随机取 \([-10^6,10^6]\),整数交点精确比较 |
simplex |
200 | 56.779 | 求解 \(n\) 个变量、\(2n\) 条约束的稠密线性规划;\(n\) 条随机约束系数取 \([0,100]\),右端取 \(n\cdot[25,50]\),另有 \(0\le x_j\le10\),目标系数取 \([1,100]\);包含表构建与最优解遍历 |
simplex_phase_one |
200 | 200.729 | 求解 \(n\) 个变量、\(3n\) 条约束的稠密线性规划;随机约束系数取 \([0,100]\),右端取 \(\max(n\cdot[75,100],\sum_j a_{ij})\),另有 \(1\le x_j\le10\),目标系数取 \([1,100]\);包含第一阶段可行解搜索、表构建与最优解遍历 |
adaptive_simpson |
1,000 | 7.581 | 在 \(n\) 个随机区间上积分 \(e^{-x^2}\);端点取 \([-5,5]\) 中间隔为 \(10^{-3}\) 的网格,使用 double,误差估计目标 \(10^{-10}\),递归深度上限 24 |
hex_division |
100,000 | 12.317 | \(n\) 位随机十六进制整数除以 \(\max(1,\lfloor n/2\rfloor)\) 位随机非零整数;包含解析、除法与商余数输出 |
hex_division_short |
100,000 | 1.161 | \(n\) 位随机十六进制整数除以 8 位随机非零整数;包含解析、除法与商余数输出 |
multiplicative_function_sum |
100,000,000,000 | 753.096 | 计算 \(\sum_{i=1}^n f(i)\),其中 \(f\) 为积性函数、\(f(p^e)=7e+11p\);系数模 469762049,包含筛素数、商分块表与递归求和 |
set_egf_composition |
131,072 | 97.886 | 在 \(\log_2 n\) 个变量上计算集合幂级数的 EGF 复合;输入含 \(n\) 个随机系数,常数项为零,外层含 \(\log_2 n+1\) 个随机 EGF 系数;模 998244353,包含变换与结果遍历 |
set_polynomial_composition |
131,072 | 97.810 | 将含 \(n\) 个随机系数的集合幂级数代入一个含 200 个随机系数的普通多项式;模 998244353,包含导数计算、变换与结果遍历 |
set_power_projection |
131,072 | 70.329 | 含 \(n\) 个随机系数的集合幂级数与 \(n\) 个随机权值,计算第 0 至 999 次幂的加权系数和;模 998244353,包含转置复合、幂投影与结果遍历 |
prime_multiplicative |
200,000 | 32.869 | 两个长为 \(p\) 的随机序列作下标模素数 \(p\) 的乘法卷积,\(p\) 是不小于 \(\max(2,n)\) 的最小素数;系数模 998244353,包含原根搜索、变换与结果遍历 |
power_of_two_multiplicative |
262,144 | 14.867 | 两个长为 \(n\) 的随机序列作下标模 \(n\) 的乘法卷积,\(n\) 为 2 的幂;系数模 998244353,包含分层、变换与结果遍历 |
multivariate_truncated |
131,072 | 45.572 | 两个各有 \(n\) 个随机系数的多项式相乘;最多三个变量,各维截断长度为 2 的幂,指数之差不超过 1,乘积为 \(n\);模 998244353,包含混合进制编码、变换与结果遍历 |
multivariate_truncated_binary |
131,072 | 302.746 | 两个各有 \(n\) 个随机系数的多项式相乘,\(\log_2 n\) 个变量各截断至次数小于 2,模 998244353;包含混合进制编码、变换与结果遍历 |
multivariate_cyclic |
131,072 | 219.265 | 两个各有 \(n\) 个随机系数的多项式作多元循环卷积;最多三个变量,各维长度为 2 的幂,指数之差不超过 1,乘积为 \(n\),模 998244353;包含原根与变换预处理、变换和结果遍历 |
multivariate_cyclic_crt |
256 | 395.109 | 两个各有 \(479n\) 个随机系数的多项式作 \(479\times n\) 的二维循环卷积,模 1004535809;包含原根与变换预处理、CRT 卷积和结果遍历 |
multivariate_cyclic_u64 |
4,096 | 75.073 | 两个各有 \(n\) 个随机系数的多项式作循环卷积,模 \(p=2^{64}-2^{32}+1\);包含原根与变换预处理、系数分块和结果遍历 |
li_chao_lines |
200,000 | 89.950 | 构建 \(n\) 个离散坐标的 Li Chao 树;交替加入直线与单点求最小值,各 \(n\) 次;坐标从 \(-5n\) 随机递增 \(1\) 至 \(10\) 后打乱,斜率与截距取 \([-10^6,10^6]\),包含排序建树 |
li_chao_segments |
100,000 | 84.857 | 构建 \(n\) 个离散坐标的 Li Chao 树;交替加入随机非空半开区间上的线段与独立单点求最小值,各 \(n\) 次;坐标从 \(-5n\) 随机递增 \(1\) 至 \(10\) 后打乱,斜率与截距取 \([-10^6,10^6]\),包含排序建树,查询允许未覆盖坐标 |
concave_concave_maxplus |
200,000 | 2.094 | 两个长为 \(n\) 的凹序列求 max-plus 卷积;初值取 \([-5\cdot10^5,5\cdot10^5]\),斜率从 \(n\) 开始,每步随机减少 \(0\) 至 \(4\),包含结果遍历 |
arbitrary_concave_maxplus |
200,000 | 13.242 | 两个长为 \(n\) 的序列求 max-plus 卷积;一个任意,另一个凹,初值及任意项取 \([-5\cdot10^5,5\cdot10^5]\),凹序列斜率从 \(n\) 开始,每步随机减少 \(0\) 至 \(4\),包含结果遍历 |
convex_convex_minplus |
200,000 | 2.039 | 两个长为 \(n\) 的凸序列求 min-plus 卷积;初值取 \([-5\cdot10^5,5\cdot10^5]\),斜率从 \(-n\) 开始,每步随机增加 \(0\) 至 \(4\),包含结果遍历 |
arbitrary_convex_minplus |
200,000 | 13.182 | 两个长为 \(n\) 的序列求 min-plus 卷积;一个任意,另一个凸,初值及任意项取 \([-5\cdot10^5,5\cdot10^5]\),凸序列斜率从 \(-n\) 开始,每步随机增加 \(0\) 至 \(4\),包含结果遍历 |
concave_arbitrary_minplus |
100,000 | 25.026 | 两个长为 \(n\) 的序列求 min-plus 卷积;一个凹,另一个任意,初值及任意项取 \([-5\cdot10^5,5\cdot10^5]\),凹序列斜率从 \(n\) 开始,每步随机减少 \(0\) 至 \(4\),包含结果遍历 |
suffix_automaton |
1,000,000 | 134.394 | 构建 \(n\) 个小写字母的后缀自动机 |
xor_convolution |
1,048,576 | 20.308 | 两组长度 \(n\) 的数组,模 998244353 的 XOR 卷积 |
factorize |
1,000 | 27.059 | 分解 \(n\) 个无符号 64 位整数 |
prime_table |
1,000,000 | 6.348 | 筛出不超过 \(n\) 的最小质因子、\(\varphi\) 与 \(\mu\) |
segmented_sieve |
100,000,000 | 120.118 | 分段枚举不超过 \(n\) 的所有素数;每段至多 \(2^{20}\) 个奇数,包含基础素数筛、回调及结果消费 |
squarefree_count |
1,000,000,000,000 | 1.241 | 计算不超过 \(n\) 的无平方因子正整数个数,包含 Möbius 表与 Mertens 前缀表构建 |
prime_summatory |
100,000,000,000 | 322.332 | 用商值筛同时计算 \(\pi(n)\) 和不超过 \(n\) 的素数和,包含商值表构建 |
divisor_table |
1,000,000 | 13.716 | 筛出不超过 \(n\) 的约数个数与约数和 |
dujiao_sieve |
1,000,000 | 15.936 | 构建不超过 \(n\) 的 \(\varphi\) 与 \(\mu\) 前缀表 |
divisor_count |
1,000,000,000,000 | 2.193 | 求 1 至 \(n\) 的约数个数之和 |
divisor_sum |
1,000,000,000,000 | 2.300 | 求 1 至 \(n\) 的约数和之和 |
distinct_quotients |
1,000,000,000,000 | 11.619 | 枚举所有不同的 \(\lfloor n/x\rfloor\) |
subset_sum |
10,000 | 9.730 | \(n\) 个 \([1, 1000]\) 权值,容量为总和的一半 |
subset_sum_counts |
200,000 | 330.842 | \(n\) 个 \([1,n]\) 正整数,统计目标和 \(0\) 到 \(n\) 的子集个数,模 998244353,包含频次统计与形式幂级数 exp |
knapsack |
200,000 | 4.748 | \(n\) 个物品,重量 \([1, 50]\)、价值小于 \(10^9\),容量 1000 |
subarray_gcd |
200,000 | 109.875 | \(n\) 个 \([0, 10^6]\) 整数,统计各子数组 gcd |
range_gcd_changes |
200,000 | 29.055 | \(n\) 个 \([0,10^6]\) 整数;列出每个左端点的区间 gcd 变化及其首次出现的右端点,包含结果遍历 |
montmort |
1,000,000 | 7.580 | 生成到 \(n\) 的错排数,模 \(2^{64}-1\) |
tetration_mod |
10,000 | 56.639 | \(n\) 次幂塔;底数、高度小于 \(10^9\),正模数不超过 \(10^9\) |
exponential_polynomial_sum |
100,000 | 5.392 | 次数为 \(n\),求 \(\sum_{i=0}^{10^{18}-1}2^i i^n\),模 998244353 |
f2_rank |
1,024 | 4.200 | 复制 \(n\times n\) 二进制矩阵并求秩,每个元素等概率取 0 或 1 |
polynomial_factorization |
200 | 497.531 | 分解次数为 \(n\) 的随机首一多项式,模 998244353 |
fixed_discrete_log |
200,000 | 481.208 | 预处理模 998244353、原根 3 的表,查询 \(n\) 次离散对数 |
floor_monoid_product |
10,000 | 19.240 | \(n\) 次格点路径矩阵积;路径长度、\(a,b<10^9\),\(1\le m\le10^9\),矩阵模 998244353 |
fraction_arithmetic |
200,000 | 150.594 | 构造 \(n\) 对分数,每对分别求和、差、积、商 |
gaussian_gcd |
100,000 | 45.812 | 求 \(n\) 对高斯整数的 gcd;实部与虚部均取 \([-10^9,10^9]\) |
hafnian |
32 | 177.017 | 求 \(n\times n\) 随机对称矩阵的 hafnian,模 998244353 |
lagrange_consecutive |
200,000 | 4.496 | 给定 \(f(0),\ldots,f(n-1)\),求 \(f(10^{18})\),模 998244353 |
power_sum |
100,000 | 3.060 | 以 \(n\) 为指数,求 \(\sum_{i=1}^{10^{18}}i^n\),包含点值构建与插值,模 998244353 |
increasing_sequence_bounds |
100,000 | 555.972 | 统计长为 \(n\) 的不下降序列;第 \(i\) 项范围 \([\max(0,i-a_i),i+1+b_i)\),\(a_i,b_i\) 随机取 \([0,n)\),\(0\le i<n\),模 998244353 |
mod_sqrt |
10,000 | 4.911 | \(n\) 次模平方根;模数 \(p\) 交替取 \(998244353\) 与 \(10^9+7\),被开方数随机取 \([0,p)\) |
mod_kth_root |
1,000 | 0.964 | \(n\) 次模 \(k\) 次根;模数 \(p\) 交替取 \(998244353\) 与 \(10^9+7\),被开方数随机取 \([0,p)\),\(k\) 随机取 \([1,p)\) |
mod_kth_root_count |
10,000 | 2.238 | \(n\) 次模 \(k\) 次根计数;模数 \(p\) 交替取 \(998244353\) 与 \(10^9+7\),被开方数随机取 \([0,p)\),\(k\) 随机取 \([1,p)\) |
primitive_roots |
200,003 | 16.168 | 枚举不大于 \(n\) 的最大质数 \(p\) 的所有原根并排序,包含分解 \(p-1\) 与寻找一个原根 |
stirling_first_small_prime |
2,000 | 24.100 | 模数 \(p\) 为不大于 \(n\) 的最大质数;构建有符号第一类 Stirling 表并查询 \(50n\) 次,下标不超过 \(10^{18}\) |
stirling_second_small_prime |
2,000 | 25.656 | 模数 \(p\) 为不大于 \(n\) 的最大质数;构建第二类 Stirling 表并查询 \(50n\) 次,下标不超过 \(10^{18}\) |
large_factorials |
1,000 | 236.938 | 计算 \(n\) 个随机参数的阶乘,参数取 \([0,998244353)\);模 998244353,包含分块预处理与逐个查询的尾段乘积 |
many_factorials |
100,000 | 1194.338 | 计算 \(n\) 个随机参数的阶乘,参数取 \([0,998244353)\);模 998244353,包含分块预处理与批量多点求值 |
q_binomial_primitive |
200,000 | 6.098 | 构建并查询 \(n\) 次 \(q\)-组合数,参数 \(0\le b\le a\le n\),模数 \(p=998244353\),\(q=3\) |
q_binomial_small_order |
200,000 | 2.651 | 构建并查询 \(n\) 次 \(q\)-组合数,参数 \(0\le b\le a\le n\),模数 \(p=998244353\),\(q=3^{(p-1)/1024}\bmod p\) 的阶为 1024 |
q_binomial_one |
200,000 | 3.523 | 构建并查询 \(n\) 次 \(q\)-组合数,参数 \(0\le b\le a\le n\),模数 \(p=998244353\),\(q=1\) |
berlekamp_massey |
4,000 | 14.199 | 从 \(n\) 项随机序列恢复最短线性递推,模 998244353 |
linear_recurrence_nth |
512 | 68.094 | 给定 \(n\) 阶递推,基础算法求第 \(10^{18}\) 项,模 998244353 |
linear_recurrence_nth_fast |
16,384 | 272.655 | 给定 \(n\) 阶递推,Bostan–Mori 求第 \(10^{18}\) 项,模 998244353 |
linear_recurrence_terms |
16,384 | 306.450 | 给定 \(n\) 阶递推,求从第 \(10^{18}\) 项开始的连续 \(n\) 项,模 998244353 |
min_of_mod_linear |
100,000 | 23.521 | \(n\) 次模一次函数最小值查询;区间长度、模数随机取 \([1,10^9]\),乘数与常数随机取 \([0,m)\) |
minmax_subset_int |
1,048,576 | 7.201 | 由 \(d=\log_2 n\) 个整数的子集最小值表与最大值表,分别恢复第 \(\lceil d/2\rceil\) 大与小;64 位整数运算,原值取 \([-1000,1000]\),每张表长 \(n\),构造表不计时 |
minmax_subset_mod |
1,048,576 | 7.275 | 由 \(d=\log_2 n\) 个整数的子集最小值表与最大值表,分别恢复第 \(\lceil d/2\rceil\) 大与小;原值取 \([-1000,1000]\),表值与运算模 998244353,每张表长 \(n\),构造表不计时 |
matrix_rank |
512 | 71.682 | 求 \(n\times n\) 随机矩阵的秩,模 998244353 |
pfaffian |
512 | 101.282 | 求 \(n\times n\) 随机交错矩阵的 Pfaffian,模 998244353;上三角独立随机、对角为零、下三角为上三角的相反数 |
matrix_determinant |
512 | 71.643 | 求 \(n\times n\) 随机矩阵的行列式,模 998244353 |
matrix_inverse |
512 | 422.329 | 对 \(n\times n\) 随机矩阵求逆,模 998244353 |
matrix_multiply_mod |
512 | 120.059 | 两个 \(n\times n\) 随机矩阵相乘,包含转置工作区,模 998244353 |
matrix_power |
64 | 34.395 | 用通用矩阵乘法求 \(n\times n\) 随机矩阵的 \(10^{18}\) 次幂,模 998244353 |
matrix_power_mod |
128 | 148.797 | 用模整数矩阵乘法求 \(n\times n\) 随机矩阵的 \(10^{18}\) 次幂,模 998244353 |
linear_system |
512 | 106.939 | 解有 \(n\) 个方程、\(n\) 个未知数的相容随机线性方程组,返回一个解与零空间基,模 998244353 |
linear_system_underdetermined |
512 | 40.195 | 解有 \(\max(1,\lfloor n/2\rfloor)\) 个方程、\(n\) 个未知数的相容随机线性方程组,返回一个解与零空间基,模 998244353 |
polynomial_division |
131,072 | 58.941 | \(n\) 项多项式除以 \(\lceil n/2\rceil\) 项多项式,返回商和余数,模 998244353 |
polynomial_taylor_shift |
131,072 | 16.677 | 平移 \(n\) 项多项式,求 \(f(x+71829)\),模 998244353 |
multipoint_evaluation |
65,536 | 355.389 | \(n\) 项多项式在 \(n\) 个点求值,包含乘积树构建,模 998244353 |
polynomial_interpolation |
65,536 | 419.446 | \(n\) 个不同点的点值插值,包含乘积树构建,模 998244353 |
monomial_to_newton |
100,000 | 304.140 | 把 \(n\) 项多项式转换为给定 \(n\) 个节点上的 Newton 基系数,包含乘积树构建;系数与节点独立随机取模 998244353,节点允许重复 |
nim_product |
200,000 | 4.955 | \(n\) 对独立随机的 64 位无符号整数,分别求 nim 乘积;查表初始化在预热中完成 |
xor_space_intersection |
10,000 | 47.166 | \(n\) 组查询,每组两份各含 20 个独立 30 位向量的基;求线性空间交并约化返回的基 |
rational_approximation |
100,000 | 17.632 | \(n\) 次有理数逼近;分子、分母及逼近界限独立取 \([1,10^9]\) |
stern_brocot_queries |
100,000 | 13.575 | \(n\) 组正分数,每组分别查询指定深度祖先、两点 LCA 和第一点的子树边界;分子分母先独立取 \([1,10^9]\) 再约分,深度取 \([0,99]\) |
rational_reconstruction |
200,000 | 13.989 | \(n\) 次有理数重构,模数 \(m=998244353\),剩余值取 \([0,m)\),分子绝对值与分母上界均为 \(10^4\);包含无解查询 |
geometric_evaluation |
65,536 | 15.402 | \(n\) 项多项式在 \(7\cdot3^i\) 求值,\(0\le i<n\),模 998244353 |
geometric_interpolation |
65,536 | 26.419 | 从 \(7\cdot3^i\) 的 \(n\) 个点值恢复多项式,模 998244353 |
polynomial_shift_samples |
65,536 | 17.648 | 已知 \(f(0),\ldots,f(n-1)\),求 \(f(71829),\ldots,f(71829+n-1)\),模 998244353 |
polynomial_product_sequence |
65,536 | 68.990 | 计算 \(n\) 个一次因子 \(x-a_i\) 的乘积,模 998244353 |
polynomial_gcd |
32,768 | 331.795 | 求次数分别为 \(n\) 和 \(n-1\) 的两个多项式的首一 gcd,模 998244353 |
polynomial_mod_inverse |
32,768 | 334.316 | 求 \(n-1\) 次多项式模 \(n\) 次多项式的逆,模 998244353 |
polynomial_roots |
512 | 57.905 | 求 \(\prod_{i=0}^{n-1}(x-i)\) 的全部根,模 998244353;构造输入不计时 |
fps_inverse |
131,072 | 52.898 | 求 \(1/f\) 的前 \(n\) 项,\(f(0)=3\),模 998244353 |
fps_logarithm |
131,072 | 67.957 | 求 \(\log f\) 的前 \(n\) 项,\(f(0)=1\),模 998244353 |
fps_exponential |
131,072 | 155.717 | 求 \(\exp f\) 的前 \(n\) 项,\(f(0)=0\),模 998244353 |
fps_power |
131,072 | 226.297 | 求 \(f^{10^{18}}\) 的前 \(n\) 项,\(f(0)=3\),模 998244353 |
sparse_fps_inverse |
200,000 | 13.715 | 求稀疏 \(f\) 的逆的前 \(n\) 项;\(f(0)=4\),随机选取 \(\min(64,n-1)\) 个非零非常数项,模 998244353 |
sparse_fps_logarithm |
200,000 | 13.454 | 求稀疏 \(f\) 的对数的前 \(n\) 项;\(f(0)=1\),随机选取 \(\min(64,n-1)\) 个非零非常数项,模 998244353 |
sparse_fps_exponential |
200,000 | 12.836 | 求稀疏 \(f\) 的指数的前 \(n\) 项;\(f(0)=0\),随机选取 \(\min(64,n-1)\) 个非零项,模 998244353 |
sparse_fps_power |
200,000 | 27.429 | 求稀疏 \(f^{10^{18}}\) 的前 \(n\) 项;\(f(0)=4\),随机选取 \(\min(64,n-1)\) 个非零非常数项,模 998244353 |
sparse_fps_square_root |
200,000 | 27.488 | 求稀疏 \(f\) 的平方根的前 \(n\) 项;\(f(0)=4\),随机选取 \(\min(64,n-1)\) 个非零非常数项,模 998244353 |
sparse_matrix_determinant |
2,000 | 81.736 | 求 \(n\) 阶矩阵行列式,包含 \(n\) 条非零对角记录和 \(2n\) 条随机记录,重复位置累加;模 998244353,使用固定投影种子,包含投影与必要的回退 |
fps_composition |
65,536 | 923.840 | 两个 \(n\) 项多项式,求 \(f(g(x))\) 的前 \(n\) 项,\(g(0)=17\),模 998244353 |
fps_compositional_inverse |
65,536 | 953.651 | 求 \(f\) 的复合逆的前 \(n\) 项,\(f(0)=0,f'(0)=3\),模 998244353 |
运行环境¶
- 时间:2026-10-25 23:23 UTC
- 提交:
d98b67744ba08813fa69ebf1f45234aa78e67b8b - 系统:Ubuntu 24.04.5 LTS x86_64
- CPU:AMD EPYC 7763 64-Core Processor;2 个逻辑核,测试串行运行
- 编译器:g++-14 (Ubuntu 14.2.0-4ubuntu2~24.04.1) 14.2.0
- 编译选项:
-std=c++23 -O2 -DNDEBUG
复现¶
单项测试可使用 build/benchmarks/benchmark <workload> <n> 5。