08 2025 档案
摘要:T1 由于绝对值即使取负数对求最大值的答案也没有影响。 \[|x_i-x_j|+|y_i-y_j|= \max(x_i-x_j,x_j-x_i)+\max(y_i-y_j,y_j-y_i) \]\[=max(x_i-x_j+y_i-y_j,x_j-x_i+y_i-y_j,x_i-x_j+y_j-y_
阅读全文
摘要:前情提要:全年龄段只用 2h 就可以获得 330pts。 T1 先排序,枚举每个数成为中位数的情况,然后必然有 \(2\) 个小于,\(2\) 个大于,这个在其他数组二分就行。对于相等只允许后面与现在相等即可。 赛时代码 #include <bits/stdc++.h> using namespac
阅读全文
摘要:T1 给定模式串 \(x,y\),给定串 \(s\),求是否可以把 \(s\) 划分成两个子序列,使得其中一个是 \(x\) 重复若干次(可能为空),另外一个是 \(y\) 重复若干次(可能为空)。多组数据。 \(1\le |s|\le 5\times 10^5,1\le|x|,|y|\le 50\
阅读全文
摘要:前情提要:本场模拟赛过于超模。 T1 赛时改为了输出最终的 \(a\) 数组。 正着做一遍贪,反着做回来就可以了,复杂度 \(O(n)\) 赛时代码 #include <bits/stdc++.h> #define int long long using namespace std; const i
阅读全文
摘要:T1 赛时将 \(n\) 改为 \(2\times 10^5\),值域改为正数。 \(r\) 肯定取 \(l+d\),区间越长肯定越好。 考虑无论如何,\(a_{i},a_{i+1}\) 在绝对值中的计算关系不变,也就是若 \(a_i>a_{i+1}\),永远有 \(a_i\ge a_{i+1}\)
阅读全文
摘要:T1 形式化题面:初始有一张 \(n\) 个点的完全图,接着删除 \(m\) 条边。询问有多少长度为 \(13\) 的序列 \(p_1,\dots,p_{13}\) 满足: \(1\le p_i\le n\)。 \((p_1,p_2),(p_2,p_3),(p_1,p_4),(p_2,p_5)\)
阅读全文
摘要:T1 有 \(n\) 个点的无向图,每条边有一个长度(经过这条边需要花费的时间),每个点上都有一个红绿灯,第 \(i\) 个点上的红绿灯周期为 \(t_i\),每个周期内只有从 \(s_i\) 到 \(e_i\) 的时间内可以从这个节点通行。形式化的,若你到达第 \(i\) 个节点的时间为 \(k\
阅读全文
摘要:如果有原题的不再叙述题面。 T1 按照 \(t\) 逐位贪心匹配,每次要找到一个形如 \(i\) 位置之后第一个字符 \(c\) 出现的位置,这个直接将 \(s\) 倍长预处理即可。 赛时代码 #pragma GCC optimize(2) #pragma GCC optimize(3) #incl
阅读全文
摘要:T1 给定 \(n\) 个整数 \(a_i\), 中间用加减号隔开. 你可以在里面任意添加括号, 求能得到的最大结果是多少. \(1\le n\le 10^5\)。 如果套三层括号,那么一定可以消成两层及以下的括号。 然后只有在减号的情况下加左括号是有意义的,所以减号时可以加左或右括号,加号就只能加
阅读全文
摘要:T1 判断是否存在一棵树,满足它有 \(a\) 个一度点和 \(b\) 个三度点,如果存在请给出一个节点数不超过 \(2000\) 的构造,否则输出 \(0\)。 \(0\le a,b\le 200\)。 \(a=0,b=0\) 直接输出 \(1\) \(a=0,b\not = 0\) 显然不可能。
阅读全文
摘要:T1 有个 \(n\times m\) 的矩阵,行编号为 \(0\dots n−1\),列编号为 \(0\dots m−1\),第 \(i\) 行第 \(j\) 列一开始为 \(im+j\)。 现在支持三种操作:交换两行,交换两列,或者交换某两个位置。求进行完 \(q\) 次操作后矩阵的形态。 \(
阅读全文
摘要:T1 给定一个长度为 \(n\) 由小写字符组成的串,你会将这个串进行若干次修改,你想要求得最少修改次数使得整个串可以出现 noip 作为子串。 修改定义为以下四种操作之一: 1、在任意位置插入一个任意小写字符。 2、删除任意位置的任意一个字符。 3、修改任意位置的一个字符,使其变为另一个字符。 4
阅读全文
摘要:FFT,NTT 多项式 多项式,\(F(x)=\sum_{i=0}^{n-1}a_ix^{i}\),\(a_i\) 为常数。 上面的式子可以 \(O(n)\) 求出。 两个多项式相加,即把对应的系数相加即可,复杂度 \(O(n)\)。 两个多项式相乘,由于 \(x^n=x^0x^n=x^1x^{n-
阅读全文
摘要:DP 是 OI 界十分特殊的一样东西。 当我们获得一个题面时,如果我们能够定义出一个状态,并且能够直接或间接导向答案,那么这个 DP 就是可行的。 如果复杂度过高,可用优化状态,优化转移的方式减小复杂度。 矩阵优化 当转移较为固定,但数量较多时使用矩阵优化。 注意矩阵不满足交换律(你就说状态转移有没
阅读全文
摘要:后缀数组 \(su_i\) 表示 \(s[i,n]\)。 \(rk_i\) 表示 \(su_i\) 在所有 \(su_j\) 中的字典序排名。 \(sa_i\) 表示 \(rk_i\) 的 \(su\) 的开头位置。 也就是说 \(sa_{rk_i}=rk_{sa_i}=i\)。 考虑有一个字符串,
阅读全文
摘要:前置知识 \(S[l,r]\) 表示字符串 \(S\) 中 \(S_l,S_{l+1},...S_{r-1},S_r\) 构成的字串。 \(|S|\) 表示 \(S\) 的长度。 马拉车(manacher) P3805 【模板】manacher 几乎所有的字符串算法都有着使用已知的信息去优化新信息的
阅读全文
摘要:作者的题单本身叫“简单树论”,但是这里把“简单”隐去了。 kruskal 重构树 在做 kruskal 生成树时,我们将边权从小到大排序,若 \((u,v)\) 不连通,则加入这条边。 这个过程比较特别,考虑用一些结构来记录这个过程,于是有了 kruskal 重构树。 考虑每次加入一条边 \((u,
阅读全文
摘要:线段树合并 P4556 [Vani有约会] 雨天的尾巴 /【模板】线段树合并 先差分离线,转化成单点加。如果暴力做的话然后我们能够得到 \(n\) 个大小为 \(10^5\) 维护每个数出现次数的桶。由于差分,我们还要做一个前缀和,显然不能暴力将桶相加。 考虑每个节点搞一个动态开点线段树替换桶,然后
阅读全文
摘要:可持久化线段树 普通可持久化线段树 又称主席树。 单点修改线段树时,我们只会改动 \(\log n\) 个节点,因此对于这 \(\log n\) 个节点新建位置,就可以新建一个时间点的状态。 void update(int &p,int lp,int l,int r,int x,int y){ a[
阅读全文
摘要:计数题无处无处不在,方式五花八门。 前置知识 组合数。请注意上下位置,这是 \(n\) 个中选 \(m\) 个。 \[C^m_n=C(n,m)=\begin{pmatrix}n\\m\end{pmatrix}=\frac{n!}{m!(n-m)!} \]组合数递推。 \[C^m_n=C^{m-1}_
阅读全文
摘要:一、分块 我们发现,如果一片区域被完全覆盖,我们可以对这个整块打上标记,而如果没有完全覆盖,我们只能挨个加。设我们将序列平均分成了 \(B\) 块,对完全覆盖的整块我们最多做 \(O(B)\) 次打标记。对没有完全覆盖的部分,发现只有两端要暴力做,所以是 \(O(\frac{N}{B})\) 级别的
阅读全文
摘要:T1 想象学竞赛网站 CodeFancy 举办了 \(m\) 场比赛。你在 CodeFancy 上关注了 \(n\) 个账号,编号为 \(1\sim n\)。你知道这 \(n\) 个账号分别参加了 \(m\) 场比赛中的哪些。但是你发现可能存在一个人使用多个账号的情况,你想知道这 \(n\) 个账号
阅读全文
摘要:模拟赛——连续段的价值 定义字母 \(c\) 的连续段为:字符串 \(s\) 中的某个子串,子串的每个字符都为 \(c\)。 定义 \(f_i\) 表示第 \(i\) 种字母的所有连续段的最长长度。如果该字母没有出现,则 \(f_i\) 为 \(0\)。 蜗蜗有一个长度为 \(n\) 的字符串 \(
阅读全文

浙公网安备 33010602011771号