自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(1319)
  • 收藏
  • 关注

原创 【2024 优快云博客之星】C++自学分享

share

2025-01-22 17:51:57 2914 71

原创 bfs

BFS遍历农田矩阵,找到每块连续农田的左上角起点后,扩展找到其右下角终点,收集所有农田的起点-终点坐标组返回。

2026-01-08 21:45:58 208

原创 贪心|建图dfs

4. 状态枚举与递归:先处理“跳过当前位”的情况(未构成合法数字时),再确定当前位可填数字上限,从有效起始数字(避免前导零)枚举所有未使用过的数字,递归计算下一位结果并累加;if ((mask >> d & 1) == 0) { // d 不在 mask 中,说明之前没有填过 d。// 如果前面填的数字都和 n 的一样,那么这一位至多填数字 s[i](否则就超过 n 啦)// 枚举要填入的数字 d。

2026-01-08 12:54:39 153

原创 预存子序列|数位dp

字符串的得分为 right - left + 1。遍历合并两侧匹配长度,取t未被匹配的最短长度即答案。令 right 为删除字符中的最大下标。前缀数组记录s前i位能匹配t的最长前缀。后缀数组记录s后i位能匹配t的最长后缀。令 left 为删除字符中的最小下标。尽可能长的 连续保留拼接 t左右。前后缀分解+预存最长子序列。

2026-01-08 10:40:21 173

原创 二分猜答案

1. 前提:输入数组是从小到大排序的素数,要找的是“两个素数相除(分子在前、分母在后,分子<分母)”中第k小的那个分数(比如数组[2,3,5],分数有2/3、2/5、3/5,第2小是2/5)- 固定分母 j ,找最大的分子 i 使得 arr[i]/arr[j] ≤ mid (因为数组有序, i 越大,分数越大);- 同时记录这些分数中最大的那个(因为统计数==k时,这个最大分数就是第k小的目标)。二分查找分数值范围,统计小于等于中间值的分数个数,定位第k小的素数分数并返回。

2026-01-07 21:43:58 391

原创 dfs|前后缀分解

找出子树和与剩余部分和的最大乘积。先计算整棵树的节点值总和,再。

2026-01-07 09:54:46 225 2

原创 hadoop|贪心

lc2064。

2026-01-06 16:36:25 156

原创 sl|deque实现|缓存命中率

deque底层实现与二分查找接口分块+中控数组在C++容器中, deque (双端队列)的底层设计和二分查找接口的支持性,结合分块思想与二分逻辑,可清晰梳理其设计原理与应用合理性。一、deque的底层实现核心1. 分块存储机制deque 并非连续线性存储,而是采用分块+中控数组的设计:数据被拆分到多个固定大小的内存块中,2. O(1)插入特性在 deque 首尾插入元素时,若对应块未存满,可直接放入实现O(1)时间复杂度;

2026-01-06 10:32:33 334

原创 分类贪心

按负数个数 分类贪心。

2026-01-05 13:34:13 191

原创 二分+bfs

lc1970public:i < v;i++) {j < col;j++) {while (!q.pop();

2025-12-31 21:56:29 351 2

原创 [AI OS] 重新定义人机交互未来

我们正站在操作系统演进的第三次革命浪潮上。如果说第一次是从命令行到图形界面,第二次是从PC到移动端,那么第三次就是从传统OS到AI OS——一个以大语言模型为内核、以智能代理为应用的全新计算范式。

2025-12-31 17:52:11 1631

原创 右端点对齐|镜像复用

lc3413镜像翻转 复用代码。

2025-12-31 16:42:38 157

原创 子序列贪心|回文

/ 主要是处理"00009"这种情况的。只有左边添加了大于'0'的数字才能在中间添加偶数个'0'// 先将大数字添加到最左边,只用考虑添加偶数个一半的数字"i"// 将数量为奇数的最大一个数字,添加在最中间。// 记录前面对称部分的最后一个下标。// 特判全 0 的情况。// 将右半部分补齐。

2025-12-30 19:58:35 176

原创 string|幻方

/ 比较剩余子串的字典序,选择更大的首字符。灵活调用substr api😋。

2025-12-29 23:24:19 130

原创 vector<int> dfs

j++) { //修改2~7号牢房的状态(牢房号1 ~ 8,对应下标0 ~ 7)//不能整除时返回第 n % (i - 1) 的状态。j++) { //看是否与第一天的状态相同,相同则说明出现了循环。if (i > 1 && flag) { //出现循环,周期为i - 1,直接返回map中对应的值。if (i == 1) { //第一天时,首尾牢房没有两个相邻牢房,状态设为0。//存储第i天牢房的的状态。

2025-12-29 18:27:05 154

原创 backup Karpathy x

教育改革: 激发探索的兴趣 一定是最重要的。

2025-12-27 17:33:08 117

原创 回溯+位运算|前缀和优化背包

/ 等价于 pyramid[n-1][i] = bottom[i]&31。// 清除之前填的字母,等价于 pyramid[i][j] = 0。// 等价于 pyramid[i][j] = top。// 注意这里把 k 减小了。// 计算 f[i] 的前缀和数组 s。

2025-12-26 22:16:49 700

原创 离散化+线段树|树状数组

/ 存储所有待离散化的值。// 找到第一个大于等于x的位置。// 二分求出x对应离散化的值。

2025-12-26 21:59:00 182

原创 2h看完了cpp的46宗罪

好了 再来说一些cpp的优点吧 ai时代不说十年 明年发生什么其实都不知道 做当下想做的事情 别的都无所谓了 just do it。至于项目 感觉什么语言不是特别重要,哎反正能构造出想要的东西就行,寒假应该会主要使用rust,了,algo用的还是cpp习惯了,尝试用rust写了几天,还是决定放过自己。笑傻了 还是太有生活了,感兴趣的可以自己去搜原视频。历史包袱 构成了cpp的庞大生态 亦是其包袱。当然这方面cpp还是优于rust的 &对比体现rust的优秀。

2025-12-26 21:17:55 281

原创 压缩trick

再逐一校验障碍物坐标,若障碍物坐标在机器人到达目标点前的路径中则返回false,否则返回true。将路径坐标编码存入集合,计算目标点在指令循环后的剩余坐标,验证其是否在单次路径中;//圈数位置 无法抵达。模拟机器人执行一次指令的路径。

2025-12-26 15:30:27 226

原创 贪心|最小生成树|分段

/ 存储切割成本和类型,pair第一个值为成本,第二个值0代表水平(H)、1代表垂直(V)不是真的要写最小生成树,是为了证明采用这种贪心策略是“正确的”,写出来的代码是等价的....如果切晚了会有增加segment的风险,而cost最大线段增加的总cost也最多。if (type == 0) { // 水平切割。} else { // 垂直切割。把这个题目转成最小生成树模型,那么正确性就证明完毕了。// 按成本从大到小排序。“高费用的线段越早切越好”

2025-12-26 12:01:23 145

原创 逆序贪心

sort后贪心check单向压制。

2025-12-25 11:25:53 182

原创 前缀和+贪心|状压优化hash

/ 取三个值的最大值:当前机器需移出的衣物数、前缀和绝对值、当前结果。取“单台机器超量数”和“累积流量绝对值”的最大值,得到最少操作步数。为什么 machines[i] - avg 不用取绝对值呢。通过前缀和计算衣物转移的累积流量。先判断衣物总数能否均分。

2025-12-24 19:38:30 166

原创 pq|dfs|快排

先建树,DFS回溯维护每个字符的最近祖先,把同字符子节点移到最近祖先下重构树,最后DFS统计每个节点的子树大小。// 注意这里已经把 1 算进去了。= -1) { // y 没被删除。

2025-12-24 17:51:10 794

原创 hash+滑窗|逆序

if(mins[i] - mins[i-2] <= 60) { // 第i个和前2个的时间差<=60分钟。// 2. 检查每个姓名的时间是否有1小时内>=3次。//1. hash分组。

2025-12-24 13:22:12 283

原创 排序|倒序遍历|set

lclcp52public:set<int> s;if (!dfs(root);i >= 0;--i) {return ret;

2025-12-24 10:17:52 253

原创 rotate模拟|pq贪心

重量: 空气<石头<障碍物,然后给三种符号赋大小不同的int型,然后以每排障碍物之间的小数组为单位对每排数组进行排序(障碍物不参与排序)先把每行石头按重力堆到右侧(遇障碍停),再把处理后的矩阵顺时针转90度得到结果。//落到障碍物前一个。还有一种也挺好的思路。

2025-12-23 17:12:30 395

原创 排序+等差求和

/ coins 已排序,后面没有比 c 更小的数了。int m = 0;// 一开始只能构造出 0。// 无法构造出 m+1,继续循环没有意义。// [0,m] 中一共有 m+1 个整数。对有序硬币数组,从0开始累加能连续构造的数值上限。,最终返回可构造的连续整数个数。

2025-12-23 13:14:12 125

原创 dp+二分

/最多只能参加两个。// 结束时间 < t[0] 的位置。dp+二分查找,找出两个不重叠事件的最大价值和。// 按结束时间排序。

2025-12-23 10:13:12 386

原创 sqlist wal模式

WAL(Write-Ahead Log)是SQLite的预写式日志,核心是。看到一个用rust重写sqlist的项目在解决这个问题,随手普及记录一下。回滚日志下写操作会锁定数据库,读操作需等待写锁释放。回滚日志崩溃时,根据日志恢复被修改页的旧数据。WAL 重启时重放日志中的修改到数据库;WAL模式与传统回滚日志模式的核心区别。(相当于 又加了一个文件 解决问题)回滚日志是原地修改+写回滚页,WAL 是追加写日志,修改先。,保证事务原子性与持久性。

2025-12-22 18:14:38 162

原创 相邻不同_贪心

统计 nums 与 forbidden 对应位置相同元素,结合元素出现次数限制 (鸽巢 贪心_最多相同元素。计算使两数组对应位置元素匹配的最小交换次数。

2025-12-22 16:58:42 146

原创 cpp lambda vs 仿函数

1. 无捕获Lambda可被隐式转换为函数指针,或直接作为模板参数实例化,编译器能更轻松地做内联优化(消除函数调用开销);2. 有捕获Lambda本质是编译器自动生成的匿名仿函数,与手写仿函数的底层结构几乎一致,性能基本无差别。实际场景中,Lambda的“快”更多是写法简洁带来的优化友好性,而非语法本身的性能优势。而传统仿函数的 operator() 是否内联,取决于编译器对类成员函数的优化判断。Lambda表达式不一定比仿函数快,二者性能差异主要源于编译器优化策略。

2025-12-22 16:28:35 186

原创 贪心拆分

/ 奇数直接返回空。// 取下一个不同的偶数。先从2开始挨个加不同偶数,最后把剩下的数补到最后一个数上。// 从最小的偶数2开始取。// 补上剩余的差值。

2025-12-22 10:53:33 164

原创 差分+扫描线|子序列dp|区间覆盖查询

超过 sum 或 hi 后,修正失效,对应 d[sum+1]++ 和 d[hi+1]++ 把次数加回去。- 落在 [lo, sum) 区间的目标和,数对只需 1 次移动 → 总次数减 1,对应 d[lo]--。- 目标和等于 sum 时,数对无需移动 → 总次数再减 1,对应 d[sum]--。sum:差分在“全需 2 次移动”的基准上,按区间调整真实移动次数。差分统计数组两两配对和的不同区间所需移动次数,遍历求最小移动次数。//对可抵达的结果 差分。

2025-12-21 19:09:37 254

原创 pq贪心|差分+前缀和

pq最小堆 维护动态前k大。

2025-12-21 14:53:34 222

原创 贡献法+dfs|虚树

lc849public:total[x]++;continue;i <= mx;i++) {dfs(0, -1);return ans;

2025-12-21 14:48:58 299

原创 string|log

/ 删掉当前的前后缀(各走一步)// 移动前缀到第一个不同的位置。// 移动后缀到第一个不同的位置。

2025-12-21 09:45:29 411

原创 状压dp|dfs|dijk

每个工人分配部分任务,取“当前工人任务耗时”和“之前工人最大耗时”的较大值。预处理 抽象出jobs子集枚举 状态 +状压dp。最终找k个工人干完所有任务的最小最大耗时。

2025-12-20 15:29:15 232

原创 位运算

1 << (k - 1) 是 k 位二进制数的最高位掩码(比如 k=3 时就是 100 ), ~ 取反后和 cur 按位与,就能精准去掉超出 k 位的部分,保证 cur 始终是 k 位二进制对应的十进制数。- 第二步: 1 << (2-1) = 2 (二进制 10 ), ~2 对应二进制 ...1101 , 3 & ~2 = 1 (二进制 01 ),为下一次窗口右移做好准备。这等价于把旧数值的二进制整体左移 1 位,再补上右侧新字符的位。左移后数值的二进制位数会超过 k,用。

2025-12-20 08:56:32 245

原创 二维前缀+memo枚举

lc2958public:while(r<n)l++;r++;return ret;

2025-12-19 21:31:28 188

软件彻底卸载轻量工具geek.rar

backup_软件彻底卸载轻量工具geek.rar

2025-10-22

kconfig-language

kconfig-language docs

2025-08-20

数模论文tip-思维导图版

数学建模论文

2024-06-28

一张思维导图了解vector简单用法

一张思维导图了解vector简单用法

2024-06-17

一看就会的思维导图-C++手动模拟String的增删查改

一看就会的思维导图-C++手动模拟String的增删查改

2024-06-05

C++手动模拟String底层与深浅拷贝

超全的思维导图

2024-06-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除