- 博客(44)
- 收藏
- 关注
原创 如何hack std::unordered_map(bushi)
这种方法不保证能100% TLE,但在某些情况下(例如针对字符串的哈希),是寻找碰撞的有效手段。这就像酒店存包,你只按房号末位存包,结果一个旅行团的所有人房号末位都相同,导致所有行李都堆在了一个柜子里,找起来就成了灾难。通过构造大量这样的键,攻击者能迫使所有数据都挤在一个桶里,形成一条长长的链表。如果哈希函数比较复杂,无法直接通过等差数列攻击,可以利用“生日悖论”的思想。对于整数键,最常见的弱点是 C++ 标准库中简单且固定的哈希函数。的解法时,我们可以通过提供一个强大的自定义哈希函数来加固。
2025-06-09 00:49:04
694
原创 【TUST“码蹄杯”编程之星】4.30 每日一题
计算长度为 2n的排列中,满足以下条件的排列数目(模 1e9+7):至少有 n个相邻位置满足前一个数小于后一个数。例子解析:当 n = 1 时,只有一种排列满足条件:[1, 2]。在排列 [1, 2] 中,p₁ < p₂,并且有一个 i = 1 满足条件。由于 1 ≥ n,这个排列应该被计入。在排列 [2, 1] 中,p₁ > p₂。因为 0 < n,这个排列不应被计入。
2025-04-30 12:48:12
294
原创 vscode vim插件操作查缺补漏
这些方法本质上是触发了 VS Code 的多光标功能,并允许你结合 Vim 的编辑命令进行操作。选择最顺手的方式即可。
2025-04-30 12:23:05
678
原创 【TUST“码蹄杯”编程之星】4.29 每日一题
维护一个最多显示n条帖子的"最近动态"区域:初始状态:显示帖子1,2,…,n(从上到下排列)操作规则:当处理新帖子p(p≥n+1):若p已在区域中,将其移到顶部若p不在区域中,将其添加到顶部,并移除最底部的帖子任务:对每个初始帖子i(1≤i≤n),输出它首次被移除的时间(若未被移除则输出-1)数据范围n,m ≤5e4(所有测试用例的n和m总和均≤5e4)
2025-04-29 18:16:35
152
原创 【TUST“码蹄杯”编程之星】4.28 每日一题
三人玩游戏,每人写下n个不同的3字母单词。统计得分规则如下:若某单词仅一人写出,该人得3分;若某单词被两人写出,两人各得1分;若某单词被三人写出,无人得分。用例包含三人各自写的n个单词。输出每人的得分。输入数据:10未选择任何文件。
2025-04-28 09:47:19
324
原创 【TUST“码蹄杯”编程之星】4.27 每日一题
你被给定一个大小为n的数组a。你可以对该数组执行以下操作:选择两个不同的整数i,j(1≤i<j≤n),将ai替换为x,aj替换为y。为了不破坏数组,必须满足ai | aj = x | y,其中 | 表示按位或运算。注意x和y是非负整数。请输出在使用上述操作任意次数后,数组元素可能的最小总和。
2025-04-27 12:35:18
287
原创 【TUST“码蹄杯”编程之星】4.26 每日一题
给定两条长度均为 n 的整数数组 a 和 b,它们称为“互补”的,当且仅当存在一个整数 x,使得对所有 1≤i≤n 都有:数组 a 和 b 的元素都是 [0, k] 之间的整数。但数组 b 中有些元素丢失,用 −1 表示。现在需要把所有的 −1 替换为 [0, k] 之间的整数,使得新的 b 与给定的 a 互补。求有多少种不同的填充方案能使 a 和 b 互补。
2025-04-26 19:57:48
185
原创 【TUST“码蹄杯”编程之星】4.25 每日一题
给定两条长度均为 n 的整数数组 a 和 b,它们称为“互补”的,当且仅当存在一个整数 x,使得对所有 1≤i≤n 都有:数组 a 和 b 的元素都是 [0, k] 之间的整数。但数组 b 中有些元素丢失,用 −1 表示。现在需要把所有的 −1 替换为 [0, k] 之间的整数,使得新的 b 与给定的 a 互补。求有多少种不同的填充方案能使 a 和 b 互补。
2025-04-25 12:23:13
381
原创 C++ round 函数笔记 (适用于算法竞赛)
std::round用于将浮点数四舍五入到最接近的整数(中间值0.5远离零),返回浮点类型。在竞赛中要高度警惕浮点数精度问题对round结果的影响。如果需要整数结果,必须进行显式类型转换),并注意溢出。优先考虑全程整数算术,如果可能的话。了解ceilfloortrunc作为替代方案。了解可以用于格式化输出。手动实现(非负) /(负) 是避免调用库函数的一种方式,但仍受输入x精度影响。在竞赛中,选择哪种方法取决于问题的具体要求、数据范围以及对精度的要求。
2025-04-24 21:57:23
923
原创 【TUST“码蹄杯”编程之星】4.24 每日一题
故事背景在春日的校园里,图书馆旁的长廊总是弥漫着淡淡的花香。帅气又神秘的 Ntarsis,就像那抹清风,手里捧着一个长方体的盒子 B。这个盒子 B 就是他与心仪之人之间的距离——长为 x、宽为 y、高为 z,从坐标 (0,0,0) 延伸到 (x,y,z),稳稳地摆放在课桌一隅,仿佛暗恋的心事,清晰却又隐藏。在他心底深处,还藏着另一个更小、更精巧的盒子 S,那是他对暗恋对象的悸动与期待。这个盒子 S 的体积恰好是 k,他希望 S 的长、宽、高都为正整数,就像他对喜欢的人,每一个小小的心意都真实而具体。
2025-04-24 12:32:51
466
原创 【TUST“码蹄杯”编程之星】4.23 每日一题
在“NEIMARK”这座看似普通的IT校园深处,昏暗的走廊尽头传来铿锵的脚步声——又是一场生死未卜的编程较量。教练的声音像夜半敲门般,带着不容置疑的威严和淡淡嘲讽:“这里,没有旁观者,只有强者与被淘汰者。故事引子与角色设定你以为这只是又一场平凡的集训?别傻了。地点:NEIMARK培训中心,传说这里隐藏着通往巅峰的秘密。对象:参与者们在各自的座位前如同幽灵般潜伏,每个人的身上都刻着一个数字——他们的技术水平 ai。教练:神秘而冷酷,唯有“强队”才能获得他那仿佛能洞悉人心的赞许。
2025-04-23 13:15:11
279
原创 【TUST“码蹄杯”编程之星】4.22 每日一题
NIT,这位新手大佬来了城里!成千上万的人排队给他 orz。为了让这些“orz 他”的人保持娱乐,NIT 决定让他们解决下面这道与 orz 操作相关的问题。你也能解出来吗?给你一个长度为 n、下标从 1 开始的整型数组 a,以及一个整数 z。要求:经过若干次(包含 0 次)上述操作后,数组 a 中最大元素的最大可能值是多少?
2025-04-22 14:16:31
336
原创 【TUST“码蹄杯”编程之星】4.21每日一题
如果把整个字符串看作一个子串,那么mex也就为2,所以由于题中样例0的连续区块个数大于1(全为0的子串mex为1,全为1的子串mex为0,含0和1则mex为2),就没必要统计0的连续区块个数了,直接输出2即可。
2025-04-21 12:36:27
190
原创 Dijkstra 算法入门笔记 (适用于算法竞赛初学者) - C++ 代码版
Dijkstra 算法是图论中基础且重要的单源最短路径算法,核心是贪心和松弛。掌握堆优化版本对于算法竞赛至关重要。理解原理、前提、细节,并通过 C++ 代码实践和做题来巩固。
2025-04-20 21:28:35
789
原创 Python 字符串切片与反转详解
last_3 = n[-3:] # 正序获取最后3个字符: 'rld'last_3_rev = n[:-4:-1] # 逆序获取最后3个字符: 'dlr'
2025-04-01 13:51:57
375
原创 `scanf` vs `cin` 深度对比(算法竞赛向)
在ACM/ICPC等竞赛中,约15%的输入错误源于换行符问题!(基于100,000个整数的读取)
2025-04-01 01:40:05
293
原创 (C++)计数排序
计数排序是一个适用于范围小且整数数据的排序算法。通过统计每个元素的出现次数并根据这些统计信息将数组排序,可以达到非常高的排序效率。它的时间复杂度为 O(n + k),其中 n 是数组大小,k 是数据范围,适用于数据范围较小的情况。
2025-04-01 00:50:51
192
原创 C++中lower_bound 的查找范围和 make_pair() 匹配查找数据类型
在已排序的序列中查找第一个大于或等于给定值的元素。的数据类型与容器中的元素类型匹配。类型的元素时,需要确保。
2025-04-01 00:46:22
233
原创 C++ 全局初始化与预处理技巧笔记(算法优化向)
这种预处理技术能显著提升算法题的运行效率,特别适合笔试和竞赛场景。掌握后可以轻松应对动态规划类问题的性能优化需求。
2025-04-01 00:34:58
311
原创 C++ Lambda 表达式笔记(算法题向)
捕获方式说明算法题常用场景[&]引用捕获所有变量需要修改外部变量(如记忆化数组)[=]值捕获所有变量需要只读访问外部变量(较少使用)[var]值捕获特定变量需要特定变量的副本[&var]引用捕获特定变量需要修改特定变量[this]捕获当前类对象(类内定义 lambda 时)类方法中使用[&, var]引用捕获所有变量,但值捕获 var大部分变量需要修改,个别需要副本[=, &var]值捕获所有变量,但引用捕获 var大部分变量只读,个别需要修改。
2025-04-01 00:17:22
297
原创 移动string(避免复制)
在 C++ 中,移动字符串以避免复制可以使用std::move。这会将字符串的所有权转移到另一个变量,而无需复制底层数据。
2025-03-31 22:49:15
217
原创 完全背包问题总结(C++实现)
设 [dp[i][j]] 表示前 [i] 种物品放入容量为 [j] 的背包中所能获得的最大价值。特性二维数组实现一维数组实现空间复杂度[O(N * V)][O(V)]代码复杂度较高较低适用场景初学者理解动态规划过程实际应用,效率优先状态转移方程。
2025-03-31 21:57:45
399
原创 Python 列表推导式详解
列表推导式(List Comprehension)是 Python 中一种简洁、高效的创建列表的方法。它允许你在一行代码中,基于已有的列表或其他可迭代对象,通过应用某种表达式和条件,生成一个新的列表。
2025-03-31 20:03:57
213
原创 cpp cpp cpp
使用命名空间 (Namespace): 将相关的函数和类放在同一个命名空间中,可以避免命名冲突,提高代码的可读性和可维护性。使用静态函数 (Static Function): 如果函数只在当前文件中使用,可以将其声明为静态函数,限制其作用域,避免被其他文件调用。使用匿名命名空间 (Unnamed Namespace): 在源文件中使用匿名命名空间,可以使其中的函数和变量只在当前文件中可见,相当于静态函数和变量。使用 Lambda 表达式 (Lambda Expression)
2025-03-28 12:35:30
1061
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人