[置顶]
洛谷讨论区/专栏/云剪贴板续命(自动跳转保存站) v1.0
摘要:
众所周知,由于某些特殊原因,洛谷讨论区倒闭了。国际站对国内用户封锁,专栏和云剪贴板也不再可用。 然而,过去的讨论区的部分帖子仍然可以用洛谷帖子保存站来查看,专栏和剪贴板也可以用新兴的洛谷保存站访问,但是为了避免每次都要麻烦地手动更改链接,我们需要一个方便的脚本。 v1.0 特性: 检测讨论区帖子是否
[置顶]
OI 知识树
摘要:
做完这个才发现我会的可真少,还得多加努力才行。 知识结构来自 OI-Wiki,在此感谢! 占位防首页炸 KaTeX.............................................................................................
[置顶]
基环树 DP:学习笔记
摘要:
本文在以下平台同步发送:洛谷专栏、博客园、CSDN 总述 定义 基环树,是一个 \(N\) 个点和 \(N\) 条边的连通图,特征是图中有且仅有一个环。特别的,如果不连通且每个连通块的点数和边数都相等,那么这就是一个基环树森林。 基环树 DP,顾名思义,就是在一个基环树上 DP,或是 DP 的结构类
[置顶]
换根 DP:进阶练习笔记
摘要:
前言 观前提醒:本文非新手向文章,不建议作为换根 DP 入门使用。 本文在洛谷专栏、博客园、CSDN同步发送。 换根 DP 是树状 DP 的一种,思维难度较高,但是学会以后很套路也很轻松。 例题 P3047 [USACO12FEB] Nearby Cows G 对于每个节点求出距离它不超过 \(k\
[置顶]
单调队列:实用而好写的数据结构
摘要:
前言 | Preface 这几天连续做了好几道单调队列的题,难度从绿到蓝不等,摸索出了一些经验,也总结了一些单调队列的特点和规律。 本文作者:Jerrycyx 本文在以下平台同步发送:洛谷、博客园、CSDN 推荐在洛谷专栏阅读以获得更好的阅读体验。 概述 | Outline 顾名思义,单调队列的重点
[置顶]
新版骗分导论 - 修订版
摘要:
\[\Huge\text{新版骗分导论} \]\[\small\texttt{THE NEW GUIDE OF CHEATING IN INFORMATICS OLYMPIAD} \]\[\large\text{蒟\ 蒻\ 的\ 宝\ 书} \]\[\normalsize\overline{\qqu
2025.3.15 闲话:DeepSeek立大功——满足⌈a\x⌉≥b的最大整数x
摘要:
人类还是太逊了,DeepSeek-R1 会给出答案,直接证伪我的假做法。 为了找到满足条件 \(\lceil \frac{a}{x} \rceil \ge b\) 的最大整数 \(x\),我们可以将条件转换为不等式分析: 条件转换: \(\lceil \frac{a}{x} \rceil \ge b
分块:2025.2 练习记录
摘要:
P3372 【模板】线段树 1 虽然这是道线段树题,但是数据范围只有 \(10^5\),拿来作为分块模板题也未尝不可。 计算出段长以后,将数列按照这个段长划分(最后一段可以不满),同时记录每个数所属段的编号。 int len; struct Block{ int l,r; LL dat,add; }
2025.2.16 闲话2:小技巧#2
摘要:
分治恶心题:P7482 不条理狂诗曲。 当 \(\max\) 等函数中有多个变量不好变形时,尝试将一些变量压到一起。 例如本题简化方程: \[\max(fl_{1,i}+fr_{0,j},fl_{0,i}+fr_{0,j},fl_{0,i}+fr_{1,j}) \]其中可以将第一二项压在一起变成:\
等比数列:小学奥数拾遗
摘要:
好吧,我才发现我居然不会小学奥数,赶紧来补一下。 设 \(S = \sum_{i=l}^{r} k \cdot q^i = k \cdot q^l + k \cdot q^{l+1} + \dots + k \cdot q^{r-1} + k \cdot q^r\), 则有 \(q \times S
2025.3.1 闲话:扫描线线段树空间问题
摘要:
先看正常的线段树代码片段: void add(int l,int r,int x,int p=1) { if(l<=tree[p].l&&tree[p].r<=r) { tree[p].dat+=x*tree[p].get_len(); tree[p].lazy+=x; return; } spre
2025.2.27 闲话:普通莫队的正确与错误写法
摘要:
远古错误排序 long long ago,我以为莫队就是把区间询问按照左端点为第一关键字、右端点为第二关键字排序,这样移动端点就可以做到 \(O(n\sqrt{n})\) 的时间复杂度了。事实上,如果出题人不刻意卡的话,复杂度也确实差不多是这样。然而,这个方法是可以卡的。 首先,左端点是单调的,移动
2025.2.21 闲话:递推求组合数前缀和
摘要:
遇到一道题,其中有一个部分是对于 \(i \in [0,n]\),求: \[f(i) = \sum_{j=0}^{n} \tbinom{i}{j} \]要求时间复杂度 \(O(n)\)。 首先有一个公式:\(\tbinom{n}{m}+\tbinom{n}{m-1}=\tbinom{n+1}{m}\
2025.2.18-20 闲话(技巧#4):结构体和重载运算符的妙用;代码清晰化的好方法;“钦定”和“恰好”、反演
摘要:
如我这篇题解所说,P9361 [ICPC 2022 Xi'an R] Contests y有着大量的重复操作:合并排名信息。这个时候就可以尝试将这些操作封装在一个结构体中,并重载运算符以便其更加方便地合并。 曾经我用空行来分割不同功能的代码块,但是它看的不是很清晰。 后来我发现了 namespace
2025.2.17 闲话:max分类讨论处理;区间DP另一枚举顺序;改变数组顺序卡常
摘要:
P6563 [SBCOI2020] 一直在你身旁 \[\min_{l≤k<r}\{ \max(f_{l,k},f_{k+1,r})+a_k \} \] 如此篇题解所说,公式中一个 \(\max\) 让这个式子变得难以处理。 这个时候就可以考虑分类讨论,考虑当什么时候 \(\max\) 取 \(f_{
2025.2.16 闲话:乘法转除法;单调不降从最大值入手;贪心策略找必要操作
摘要:
在这道题中,初看似乎要用二进制拆分字典树啥的,但是实际上不用。 注意到本题有两种操作:乘二和除以二向下取整。其中乘法操作 \(2x=y\) 可以转化为 \(x=\frac{y}{2}, \text{ s.t. } 2 \mid y\),这样这道题中操作就只有除法了,而除法操作只会令元素值减小,这道题
2025.2.14 闲话:单调队列新大陆
摘要:
题目:P5665 [CSP-S2019] 划分,题意不重要,简化一下直接上方程: \[f_i = \max j \quad\text{s.t.}\quad j<i, b_j \le a_i \]保证 \(a_i\) 单调递增。 人话:找左边最近的使 \(b_j \le a_i\) 的 \(j\),要
2025.2.13 闲话:一道题中得到的诸多解题思想
摘要:
P1399 [NOI2013] 快餐店,一道 神经题目 好题,卡我半天(非虚指),从题目结论推导到代码实现精准打中我的盲点,我觉得它应该升紫。 首先读题,简化题意为:在基环树上找一个点使得这个点到其它每个点最短路的最大值最小。 初读貌似是二分答案,实际上也确实可以二分答案,但是我是来这里练基环树 D
三元组模板类——triplet.h
摘要:
前言 你是否因为把 pair<int,pair<int,int>> 当作三元组来用而苦恼于代码中充斥着难看的 .second.first?或是为 tuple<int,int,int> 的奇妙语法 get<3>(x) 感到迷惑?我们需要一个封装完整的简单易用的三元组模板类,triplet.h由此诞生。
C++ 运算符优先级
摘要:
主要方便日后查阅所用。 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右 () 圆括号 (表达式) / 函数名(形参表) . 成员选择(对象) 对象.成员名 -> 成员选择(指针) 对象指针->成员名 2 - 负号运算符 -表达式 右到左 单目运
2024.11.20 NOIP模拟 - 模拟赛记录
摘要:
异或(xor) 每次所加三角形的范围如图所示: 这道题做法较多,我是通过两组差分与前缀和来做的。 首先需要一个三角形差分,使每一次在差分数组中修改时,影响到的范围是一个三角形,比如这样(红色点为 \((x,y)\),即 \((r,c)\)): 假设我们真正需要修改的三角形是橙色部分: 那么联系到正常