- 博客(75)
- 收藏
- 关注
原创 202609CSP认证P3
这是我这次最主要的错误来源。j <= ...;j++)j 表示“第 j 毫秒”这种写法非常危险。j=2是时刻 2?还是第二毫秒[1,2)?在j=2时轮转,是第二毫秒之前还是之后?任务在第 2 毫秒结束,是在什么时候重新入队?这些问题如果没有明确时间坐标,代码会产生大量 off-by-one 错误。令cur表示绝对时刻。cur = 0表示系统刚刚启动。表示 CPU 接下来运行 1ms。cur = 0:运行 [0,1)cur = 1:运行 [1,2)
2026-10-21 21:42:44
157
原创 固定端点 + GCD 状态压缩:从 2024 ICPC 昆明邀请赛 E 到 CSP 第 37 次认证 T4
最近重新遇到了两道非常相似的 GCD 区间题:虽然两道题的目标完全不同,但它们使用了几乎完全相同的核心技巧:固定一个端点+维护所有不同的区间 GCD+合并 GCD 相同的状态\boxed{\text{固定一个端点}+\text{维护所有不同的区间 GCD}+\text{合并 GCD 相同的状态}}固定一个端点+维护所有不同的区间 GCD+合并 GCD 相同的状态更一般地说,这是一类:固定端点的区间函数状态压缩\boxed{\text{固定端点的区间函数状态压缩}}固定端点的区间函数
2026-10-12 11:14:32
225
原创 线性筛欧拉函数:统计 gcd 为质数的有序数对数量
这道题最关键的不是线性筛本身,而是先进行 gcd 的转化。固定质数pppgcdxypgcdxypxpaypbxpaypbgcdab1gcdab11≤ab≤⌊np⌋1≤ab≤⌊pn⌋而1∼m1\sim m1∼m2∑i1mφi−1\boxed{2i1∑mφi−1ans∑p≤n2S⌊np⌋−1。
2026-10-07 18:52:36
242
原创 线性筛法详解:从筛质数到欧拉函数、Möbius 函数与约数函数
xipx=ipxipp∤ip\nmid ip∤ip∣ip\mid ip∣i两种情况。p∤ip\nmid ip∤i:加入一个全新的质因子;p∣ip\mid ip∣i:已有质因子的指数增加 1。因此很多积性函数都可以在线性筛中一起递推。
2026-10-07 18:51:50
246
原创 CSP 第43次认证 T4:集合划分 —— 图染色与二分图判定
集合划分⟶冲突图染色\text{集合划分}\text{冲突图染色}集合划分⟶冲突图染色如果图中没有边,答案为 1;如果冲突图是二分图,答案为 2;否则利用层数模 3 构造,答案为 3。kx≤yk1xkx≤yk1xk1≤k2k+1\le k^2k1≤k2kx≤yk2xkx≤yk2x冲突点层数最多相差 2,因此按模 3 染色一定合法。
2026-10-07 18:49:06
307
原创 HDU 多校第 9 场 12:交换一次后相邻差平方和变大的方案数
本题的关键不在于直接计算整个数组的价值,而在于发现交换只影响常数条相邻边。这将问题转换为二维点的同向偏序计数;通过“第一维降序、第二维升序”排序后,统计第二维严格逆序对即可。再对端点与相邻位置进行单独处理,就能在OnlognO(n\log n)Onlogn。
2026-09-02 12:24:14
167
原创 Lambda表达式在算法竞赛中的应用
/ pair 优先队列:按 first 升序(小根堆)// 注意:priority_queue 返回 true 表示优先级低// 1 2// 活动选择问题int n;cin >> n;i < n;i++) {// 按结束时间升序排序});cnt++;return 0;intint要点说明sort 比较表示a排在b前面priority_queue 比较表示a优先级低于b(沉底)捕获列表[&]引用捕获,[=]值捕获,竞赛中常用[&]
2026-07-26 14:10:31
167
原创 template在算法竞赛中的一些应用
template是C++中的模板关键字,用于定义通用的函数,而不需要指定具体的数据类型。在算法竞赛中,我们在定义gcd,qpow等函数时,如果传入的参数是long long ,int,__int128等不同类型的整数变量,就可能因为和函数定义时的参数类型不同而导致报错。对于快读快写也是同样,对于int,long long ,__int128,等不同的类型,我们可能需要写多个类型的快读快写函数,这样毫无疑问是对效率的损失。
2026-07-26 13:54:08
382
原创 2021年上海市赛D. Zztrans 的套件合照
摘要:题目要求将n个人(n为偶数)排成两排,每排n/2人,满足每排身高非递减且第二排对应位置不低于第一排。解法采用动态规划,统计不同身高人数后,定义dp[i][j]为处理前i类身高后第二排有j人的方案数。状态转移考虑每类分配到第二排的人数,最终答案需乘以同类身高排列方式(阶乘)。时间复杂度O(n^3),空间O(n^2)。关键点包括状态压缩、分类处理和几何约束。
2026-07-24 14:46:14
212
原创 2024 年昆明邀请赛 M 题:意大利菜
摘要 题目要求在凸多边形披萨上进行一次直线切割,使得切下的最大块不含内部圆形菠萝。切割线不能穿过圆,但可相切。需计算合法切割的最大披萨块面积的两倍,若无解则输出0。 方法一:预处理面积前缀和,对每个起点通过二分查找最远合法终点,时间复杂度O(n log n)。方法二:利用双指针维护合法区域,起点和终点指针均单调移动,时间复杂度O(n)。两种方法均需处理大数运算,使用__int128避免溢出。 输入:多组测试数据,每组给出凸多边形顶点坐标和圆参数。输出:最大合法面积的两倍或0。
2026-07-14 11:19:44
291
原创 14决赛蓝桥杯
本题如果直接计数考虑起来十分复杂,我们考虑使用递推法设an表示的是圆上点的个数为n时的方案数,则我们考虑点1与其他的点相连的所有可能情况:1.点1不与任何点相连,此时的可能情况与an−1时相同2.若点1与点i相连,则1-i这条直线将原本的圆分成两部分,总的方案数为这两部分方案数的乘积因此anan−1k0∑n−2akan−2−k直接递推求解即可答案为104。
2026-06-02 22:57:35
342
原创 完美解决VS Code/Cursor远程连接报错:远程主机不满足运行 VS Code 服务器的先决条件(附AI编程最佳实践)
最近在接手维护一个老项目,服务器是腾讯云的轻量应用服务器,装了宝塔面板。在经历了一系列 SSH 端口放行、密码配置的折腾后,终于用系统自带的终端成功连上了服务器。终端明明能连,为什么 VS Code 就是连不上?经过一番排查,我不仅找到了病因,还摸索出了一套。
2026-05-15 10:53:37
834
5
原创 图论模板整理
本文总结了图论算法中的常用模板,主要包括:1)链式前向星存储结构;2)Hamilton型和Eular型问题的遍历方法,重点给出了Eular型遍历的完整代码框架;3)树相关问题的处理,包括节点深度和父节点信息的获取以及LCA的倍增算法实现;4)三种最短路算法(Floyd、Dijkstra堆优化、SPFA)的代码实现。这些模板涵盖了图论中的基础算法和常见问题解决方案,可作为竞赛和算法学习中的实用参考。
2026-04-06 23:31:38
364
原创 算法模板-字符串
本文介绍了三种字符串处理算法:字符串哈希、KMP和Manacher。字符串哈希部分展示了基于自然溢出的哈希实现,用于字符串去重计数。KMP算法提供了模式匹配的实现,包括next数组构造和主匹配过程。Manacher算法模板展示了如何在线性时间内求解最长回文子串长度。这些算法都是字符串处理中的基础且高效的方法,适用于不同场景下的字符串匹配和模式识别问题。
2026-04-05 22:35:06
619
2
原创 【故障复盘】VS Code Remote-SSH 连接失败:ZeroTier 链路异常与 GLIBC 版本冲突双重坑
UnparsableOutput 通常是次生错误:不要被它迷惑,优先看前面的原始 SSH 报错。版本不一定越新越好:在科研环境中,服务器系统往往较老且无法轻易升级,保留一个低版本且稳定的 VS Code 是很有必要的。分层排查:按照网络层 -> 服务层 -> 软件兼容层的逻辑,能解决 90% 的连接问题。
2026-04-02 23:28:55
477
原创 高维矩阵的压维存储和高维差分
在很多问题中,如果我们直接用d[i][j][k]进行存储可能会超出存储空间。这样我们就可以用一个一维数组来表示对应的状态。
2026-03-31 20:36:25
188
原创 从Nim游戏到SG函数
公平组合问题在蓝桥杯等算法竞赛中经常出现,最经典的例子莫过于Nim游戏Nim游戏:两个玩家面前有若干堆石子,每个玩家每次可在每堆石子中取走任意多个石子,取走最后一枚石子的玩家获胜。其结论为如果所有堆的石子个数的异或值为0,那么代表这个状态是先手必负,否则说明该状态为先手必胜状态。
2026-03-30 22:58:55
72
原创 利用树状数组求第k小的数
在算法竞赛中,一个常见的问题是给定n个数,如何求出这n个数中第k小的数。如果该问题是离线的,我们可以直接使用堆,我们考虑维护一个大小是k的大根堆,对于每个新输入的数,如果该数push进入大根堆之后,大根堆的元素个数仍<=k,那么我们直接将该数加入大根堆;如果该数push进入大根堆之后,大根堆的元素个数>k了.那么我们就将当前堆顶的元素(也就是当前的最大元素)pop掉.那么我们最后得到的k元堆,实际上就是最小的k个元素组成的大根堆.因此也就有此时大根堆的堆顶就是第k小的元素.
2026-03-25 22:01:36
223
原创 2021年蓝桥杯C++A组真题
(1.卡片)[https://www.lanqiao.cn/problems/2383/learning/]本题相对而言比较简单,给定k种卡片,每个同学分两张卡片。我们就要考虑k种卡片最多可以分给多少个同学。如果说从k种卡片种选择不同的两张卡片,那么结果就是C_{k}^{2} =k(k-1)/2种再加上我们还可以两张卡片选择相同种类的卡片,那么结果就是k种综上所述,给定k张卡片,至多可以分给k(k-1)/2+k=k(k+1)/2个同学。
2026-03-10 23:35:26
428
原创 算法模板-01trie数
在蓝桥杯中我们需要掌握两种trie树:字符字典树和01trie树,其中字符字典树主要用于处理单一字符串面向多个字符串的匹配问题而01trie树主要用于处理异或最大值的相关问题。
2026-02-24 23:44:29
95
原创 算法模板-ST表
RMQ问题是指对于数组,每次给定一个区间[l,r]要求返回区间内的最大值。对于该问题,一个很容易想到的思路是直接遍历[l,r]区间内的所有数,并求出最大值,这样的算法复杂度是O(n).
2026-02-24 23:43:41
296
原创 从 TCP 到 JSON:一次 FastAPI + LLM 生产环境 “Unexpected end of JSON input” 的底层剖析
代理层超时TCP 被中断连接被重置网关断开JSON 编码Unicode 问题FastAPI 序列化。
2026-02-23 23:37:30
805
原创 蓝桥杯中的日期问题
在很多日期问题中,输入格式为一个8位字符串代表的年月日或者题目要求输出格式为一个8位的年月日。这种情况下,我们使用格式化scanf和printf可以很好的简化问题。
2026-01-25 23:13:49
422
原创 RMQ和ST表
RMQ问题是指对于数组,每次给定一个区间[l,r]要求返回区间内的最大值。对于该问题,一个很容易想到的思路是直接遍历[l,r]区间内的所有数,并求出最大值,这样的算法复杂度是O(n).
2026-01-15 16:23:08
290
原创 【实用技巧】终止nohup后台运行程序的完整步骤(附实战案例)
查PID(ps -ef | grep 程序名)→ 杀进程(kill/kill -9 PID);重点关注ps -ef输出的第二列(PID),区分目标进程和grep自身进程;优先优雅终止,仅在程序无响应时使用强制终止。
2026-01-12 18:57:49
1224
原创 C++输入输出的一些问题
在之前的文章中我们讨论过各种数据类型使用printf输出时,格式化字符串的使用方法。下面我们来讨论一些其他的输入输出技巧。
2026-01-11 15:22:36
172
原创 __int128与一些数据范围、读取问题
本文探讨了在编程竞赛中处理大整数和浮点数的常见问题。针对超出long long范围的整数运算,推荐使用__int128类型,并提供了自定义的读写函数实现。文章还总结了常见数据类型的存储范围、精度及对应的格式化输出方式,包括int、long long、float、double等。特别强调了long double和__int128这类特殊类型的正确输出格式,帮助选手避免因数据类型选择不当或格式化错误导致的失分问题。
2025-12-30 11:28:06
373
原创 Linux使用经验——mv命令
mv是 Linux/Unix 系统中核心的文件/目录操作命令,全称,核心功能是或文件/目录(本质都是修改文件系统的目录项),无需复制文件数据(除非跨文件系统),效率极高。
2025-11-29 22:54:24
746
原创 Linux使用经验——离线运行python脚本
将日志写入test.log关键参数-u:禁用 Python 输出缓冲,保证日志实时写入文件(否则日志可能延迟显示)。nohup python3 -u 脚本.py > 日志文件 2>&1 &-u(实时日志)、2>&1(合并错误输出)、(后台运行)运维技巧:结合pskill管理进程、tail -f查看日志、systemd 实现开机自启。
2025-11-29 22:50:34
1149
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅