01 2024 档案
摘要:思路 可以观察到一件事情:在两个港口之间的船他们对应的价值都是一样的,都为左边港口的权值。因此对于这段区间的价值和就可以写成 \(val \times \sum dis\) 的形式,\(\sum dis\) 便为这些船到右边港口的距离和。那么我们就可以按照港口把序列分成很多个区间来考虑。 港口用一个
阅读全文
摘要:思路 直接正着考虑合法的方案数不是很好做,那么正难则反,可以用总方案数减去不合法方案数,这样容斥一下就能得到答案了。 设 \(F(S)\) 表示集合 \(S\) 中的边不被覆盖的方案数。那么最后的答案就是 \(\displaystyle\sum_{S \subseteq E} (-1)^{|S|}F
阅读全文
摘要:思路 对于每个 \(1 \le i \le n\) 的 \(i\) 都要求答案,那我们考虑 dp,去思考如何转移 \(f_i\)。先不考虑全局,只考虑子树内的贡献,设 \(g_u\) 表示以 \(u\) 为根的子树内,对 \(u\) 来说满足条件的点对数。对于 \(u\) 的儿子 \(v\),对 \
阅读全文
摘要:洛谷 AT 思路 先思考最优策略是什么,如果你想尽可能多的对,那么一定是答当前剩的数目最多的答案。比如当前还有 \(x\) 道 \(\text{YES}\),\(y\) 道 \(\text{NO}\),在 \(x>y\) 时一定答 \(\text{YES}\),\(x<y\) 时一定答 \(\tex
阅读全文
摘要:上下界网络流 link 无源汇有上下界可行流 没有源点和汇点,每条边都有一个流量的上限和下限 \([l,r]\),问是否存在一组可行流让网络平衡。 为了转化成我们熟悉的问题,可以把每条边都减去他们的下限 \(l\),那么流量限制就成了 \([0,r-l]\),变成一个差网络。再新建一个下界网络,每条
阅读全文
摘要:2023.11.13 CWOI T1 神奇模拟题,最直接的做法就是每个石头暴力向下滚,有 \(60\) 分。但是大样例跑了 \(15s\)。稍微观察一下,会发现很多次循环都是在重复向下走到一格空位上,于是考虑优化:用 set 维护每一列的那些位置有障碍(包括石头),每次直接 lower_bound
阅读全文
摘要:2024年了,新开一个模拟赛。 2024.1.2 CWOI 被龙哥吊打了。就只会做一道题,暴力还挂分。但是B题乱写的 \(k=1\) 有 \(30\) 分,乐。 T1 先欧拉筛,然后把每个数分解质因数,顺便统计答案。再做一个前缀和,就能 \(O(1)\) 回答询问了。时间 \(O(n \log n
阅读全文
摘要:DAY 0 明天要半期了,今天必须放松一下,不然半期怎么考得好呢。 早上 \(8:30\) 才起床,很想颓废。但是一直颓也不太好,于是自律一会儿,复习下 语文英语化学历史政治 ,有点小多,从 \(9:00\) 一直弄到了 \(9:01\) ,好累啊,赶紧玩一会儿。直接开一把农。玩的刘备,也算复习了一
阅读全文
摘要:DAY -1(2023.7.29) 提前一天飞到南京,坐了一坤时飞机。 本来以为南京很热,不过因为台风的原因,这边竟然比成都还凉快一内内。 下飞机做网约车,气死我了,那个司机有点聪明,停在停车场喊我们跑去找他,又不告诉我们停车场在哪,本来都想取消订单的,但要付违约金,只有忍气坐车。到了后他又不把车停
阅读全文
摘要:思路 每次询问 \(u,v\) 的简单路径上有多少个字符串以 \(s\) 为前缀,不难想到用 trie 树去维护。而普通的 trie 只能查询所有字符串中产生的答案,对于这类区间询问,就要用到可持久化 trie 树了。不会右转可持久化 trie 树模板题。 \(u,v\) 的简单路径上编号不连续,非
阅读全文
摘要:正常的 trie 树能解决一些字符串问题,\(0/1\) trie 能解决最大异或和问题。但是如果每次询问是针对一个区间的,那么普通 trie 就不好做了,此时就需要可持久化 trie 树。 类似可持久化线段树,对于每个版本新建一个 \(root\) (相当于每个前缀建),在插入时该继承的继承,改修
阅读全文
摘要:官方题解。 思路 首先可以把 \(a\) 数组分成 \(n\) 块,每块都是长为 \(k\) 的 \(q\) 数组。于是我们可以把答案拆成两部分计算:块内的贡献和块外的贡献。对于块内,\(p_i\) 都是一样的,因此可以直接消去,计算的实际上就是 \(q\) 序列的逆序对数,把这个值 \(\time
阅读全文
摘要:直接建边边数过多,不好处理。我们可以考虑建一些虚点,让 \(u_i\) 和 \(n+i\) 连边,\(v_i\) 和 \(n+i\) 连边。设这些新连的点为白点,与白点有连边的点在原图中一定相连,并且一定是一棵树。删除操作相当于把 \(u\) 的子白点连到他的父白点上,使用并查集维护即可。 这时再考
阅读全文
摘要:来自机房大佬 FFT 的简单解法。 思路 首先有个结论:如果 \(a\) 中存在一个子串的和为 \(x\) (\(x>2\)),那么也就一定存在一个子串之和为 \(x-2\)。怎么证明?其实和为 \(x\) 的子串有 \(3\) 种情况: \(\text{1}\dots \text{1}\) 两边都
阅读全文
摘要:思路 判断一个字符串是否是回文串,可以从它的本质出发:正着读和倒着读是一样的。快速判断它正着和反着是否一样,用字符串哈希即可。又因为涉及单点修改,区间查询,那么使用线段树维护这两个值就行了。 这里讲一下如何 pushup。以正着的哈希值为例:我们要更新 \(p\) 这个点的 \(hash\) 值,已
阅读全文
摘要:思路 首先最后的局面在两两字母间一定不会多于 \(1\) 个空格。考虑反证,假设有两个空格,那么有以下两种情况:\(\text{A}\_\_ \text{B}\),\(\text{A}\_\_ \text{A}\),也就是两边的字母不同,相同。对于第一种,在任意一个空格都可以填一个与他相邻字符不同的
阅读全文
摘要:思路 如果一条路径的 \(\text {mex} = k\),那么 \(0 \sim k-1\) 这些点一定在路径中出现过,并且一定在一条链上。如果不在一条链上,那么就不满足简单路径这一条件了。因此我们在从小到大加点的过程中如果发现一个点不在已求出的链上,那么比这个点编号大的 \(k\) 答案一定都
阅读全文
摘要:正难则反。 直接往上覆盖不好做,那么可以考虑把字符从 \(S\) 上往下删。删的过程就是在 \(S\) 中找 \(T\) 并把他们变成 #。如果 \(S\) 中有字符为 #,那我们可以把它看成任意字符,因为向上贴的过程中有重复覆盖的情况,在删的时候我们并不知道他是否重复了,所以当成任意字符来看即可(
阅读全文
摘要:题目 题意 给定一颗树,每个点有点权。求有多少对点对 \((x,y)\) 满足 \(x<y\) 且以 \(x\) 到 \(y\) 的简单路径上的所有点的点权作为边长,能围成一个凸多边形。 \(1 \leq n \leq 10^5\),\(1 \leq a_i \leq 10^9\)。 思路 遇到这种
阅读全文
摘要:赛时冲了两个多小时没冲出来,想得断断续续,导致没想到如何处理奇偶。 思路 根据限制条件一,可以知道最后的图一定是两个连通块,其中一块包含 \(1\),另一块包含 \(n\)。因为此时再想连边就必须连通两个块,使其不合法了。 每次操作都是新增一条边,那么到最后的边数是多少呢?假设其中一个连通块有 \(
阅读全文
摘要:题目 神奇模拟题。最直接的做法就是每个石头暴力向下滚,有 \(60\) 分。但是大样例跑了 \(15s\)。稍微观察一下,会发现很多次循环都是在重复向下走到一格空位上,于是考虑优化:用 set 维护每一列的那些位置有障碍(包括石头),每次直接 lower_bound 跳到下一个位置,会快很多,大样例
阅读全文
摘要:首先,我们需要想清楚要维护哪些信息,把每一种类型(包括基本类型)用结构体维护,里面存: 类型的对齐规则 占用长度 元素个数 每个元素的名字、起始位置、类型 元素名到编号的映射 struct node{ int dq;//对齐规则 ll sz;//长度 int num;//data numbers s
阅读全文
摘要:link @LHTCFLS :https://www.luogu.com.cn/blog/436107/tarjan-xue-xi-bi-ji 强连通分量 \(low\) 为 \(x\) 最多经过一条返祖边能走到栈中的节点的最小 \(dfn\) 为多少。 \(low_x=dfn_x\) 时,对于一个
阅读全文
摘要:其实直接模拟就好了。 因为要从第一行开始依次往下删,所以从小到大枚举行,看这行删完是否合法。如果不合法了,就输出答案并结束程序。然后我们就要思考如何判断当前矩阵是否合法。 一个暴力的想法是把下面的每一列字符串都表示出来,看他们之中有没有不同的。但是这样做是 \(\mathcal{O(n^2m)}\)
阅读全文
摘要:CSP前的晚自习本来想打板子的,但是没有做题的欲望,就来写题解了。 小清新 dp。 思路 先观察每一个操作,发现操作一最特殊,思考下它有什么性质。如果我们进行了一次以上的操作一,一定不是最优的。因为每次都会把前 \(i\) 个数都变成零,重复之后就会覆盖原来的操作,回到第一次操作的初始状态,这样前
阅读全文
摘要:首先我们可以考虑在已知原排列的情况下,如何判断这个序列是否能按题意得到 \(p\) 这个排列。设原排列为 \(q\)。 记 \(a_i\) 表示在 \(q\) 的第 \(i\) 个位置上,有多少个 \(j\) 满足 \(1 \leq j < i\) 且 \(q_j>q_i\)。如果所有的 \(a_i
阅读全文
摘要:我们要求 \(1 \to A \to B \to C \to D \to 1\) 的点权和最大值,直接暴力枚举 \(4\) 个点 \(\mathcal {O(n^4)}\) 肯定是不行的。但是观察到前两个点与后两个点是对称的,于是我们可以枚举两组点进行配对,即 \(\text {Meet in th
阅读全文
摘要:CWOI题目 GMOJ 6808 首先我们可以考虑当所有 \(a_i\) 不相等的情况,那一段区间 \(l,r\) 排好序后差值一定 \(\ge 1\),因此如果要满足条件,相邻两项一定只能差一,也就是一个公差为一的等差数列。其项数为数列的 \(mx-mn+1\),长度又为 \(r-l+1\),故有
阅读全文
摘要:一道很抽象的 \(\text {dp}\)? 状态就比较抽象。注意到 \(m\) 有 \(10^9\),肯定不能带到状态里。但是我们可以注意到:如果当前序列 \(S\) 已经合法,且有 \(S+x\) 合法,那么 \(S+x+x\) 也一定合法,因为我们可以把两个 \(x\) 消掉。因此,可以设计
阅读全文
摘要:1 操作涉及区间加法,单点查值。 对于每个块维护一个 \(ad\) 数组表示这个块每次修改增加的值的和,在修改 \(l\) ~ \(r\) 区间时,如果 \(l,r\) 在同一个块,那直接暴力修改。否则对于 \(l\) ~ \(R_{bel_l}\) 和 \(L_{bel_r}\) ~ \(r\)
阅读全文
摘要:CF1863E 参考这篇博客,本题解作为我的学习笔记。 思路 首先观察到提上说的依赖关系,容易联想到建出一张有向无环图。因为 \(a_i\) 要比 \(b_i\) 先完成,所以从 \(a_i\) 向 \(b_i\) 连一条边。而任务必须从入度为零的点开始依次往下做,因此想到拓扑排序(但题目给的就是拓
阅读全文
摘要:数位DP。 首先分析下题目,将 \(n\) 表示成一些 \(4^k\) 的数之和/差的形式 ,就可以理解为一个天平,\(n\) 放在左边,可以选一些数值为 \(4\) 的幂的砝码,放左/右都行,在让天平平衡,求方案数。 \(4^k\) 很容易联想到四进制,于是考虑把 \(n\) 转换为四进制后进行数
阅读全文
摘要:题目大意 A(Alice)和B (Bob)有一个字符串 \(\texttt s\)(所有字符都是小写字母),他们在玩一个游戏:对于这个字符串 \(\texttt s\),A可以删除其中长度为偶数的一串子串,B则可以删除其中长度为奇数的字串(也可以选择不删)。每次删除都能获得相应的分数,即将删除字串中
阅读全文
摘要:思路 在比赛的时候,第一眼看过去就觉得是道诈骗题(实际上确实是诈骗题),花了十分钟写完,一交,90分。。。调了半天也没调出来,最后仔细审了一遍题豁然开朗,现在,就让我们一起来审一审题。 对于每个 \(i\;(1 \leq i \leq n-1)\),满足\(a_i=\gcd(a_{i+1},a_{i
阅读全文
摘要:思路 题意这里就不讲了,直接进入正题。 贪心。 首先我们知道要想尽可能的让每一次操作都合法就得使 \(k\) 最大化,那么要使 \(k\) 最大就得尽可能的选择 \(0\) 操作,所以贪心策略就出来了:优先选择 \(0\) 操作,\(A,B\) 序列那个有 \(0\) 就选哪个合并。如果两个序列当前
阅读全文
摘要:思路 一看到题就知道是贪心,题目让我们求最小花费,那么我们就要知道最小花费的构成:路费+餐费。也就是说,只有在餐费和路费都最小的情况下才能达到总费用最小。我们可以把每个点的花费表示出来,再进行排序,这就是贪心策略。那么,每个点的花费怎么求呢?不仅要算单价,还要加上这个点到终点的距离(仔细想想),所以
阅读全文
阅读目录(Content)
此页目录为空