02 2024 档案
摘要:考虑反向建图,然后设 fuf_ufu 表示 uuu 点的答案,fn=+∞f_n = + \inftyfn=+∞。然后 Dijkstra 维护,每次拓展到一个新的点,相当于考虑一些同余相关的问题。容易发现这个东西可以 O(1)O(1)O(1) 求出,就做完了。 #include <bits/std
阅读全文
摘要:注意到对方的操作与我们选择的无关。故可以直接 DP 求出对方最终点数为 iii 的概率。这部分可以前缀和优化。 现在考虑我们怎么做能最优化概率。逆着 DP,fif_ifi 表示假如初始点数为 iii 的最优概率。f0f_0f0 即为所求。你发现转移分两部分,一部分是,我在 iii 不动,另一部分
阅读全文
摘要:题意:P2934 [USACO09JAN] Safe Travel G。 简要题意:nnn 个点 mmm 条边的简单无向连通图,对于 i∈[2,n]i \in [2,n]i∈[2,n],求出如果删掉 111 到 iii 最短路的最后一条边,新的最短路长度。保证 111 到任意一个点最短路唯一。 解法
阅读全文
摘要:我会无脑做法,哈哈! 考虑没有删除操作怎么做?直接每个点维护一个标记,下传直接取 max\maxmax 就好。 要删除,直接考虑线段树分治,删除变撤销。然而取 max\maxmax 貌似不好直接撤销。考虑标记永久化,这样就不需要下传。单次区间修改影响 O(logn)O(\log n)O(log
阅读全文
摘要:题意:P8264 [Ynoi Easy Round 2020] TEST_100。 简要题意:nnn 个数的序列 a1,a2,⋯ ,ana_1,a_2,\cdots,a_na1,a2,⋯,an,qqq 次询问,每次给定 l,r,vl,r,vl,r,v,求依次访问 l∼rl \sim rl∼r
阅读全文
摘要:提供一个无脑做法。 考虑操作的本质是让区间最大值替代整个区间,于是我们要维护序列删掉一个区间,还要维护单点插入。这玩意可以用平衡树做,但是难以拓展到每个点求答案上。 不妨这样:对于每次操作 [l,r][l,r][l,r],我们都找到 [l,r][l,r][l,r] 对应的原序列的区间 [l′,r′]
阅读全文
摘要:注意到树高度不超过 404040,我们考虑有没有什么可以突破的地方。 我们要求的答案也是与路径中的边数有关,不妨考虑 DP,fi,j,kf_{i,j,k}fi,j,k 表示从根到 iii 经过了 jjj 条未翻修的公路和 kkk 条未翻修的铁路,考虑以 iii 为根的子树的最小答案。转移考虑选的是
阅读全文
摘要:操作与一个点相邻的所有点,考虑以 111 为根 DFS,然后将每个这样的点分为其父亲和儿子考虑。注意到父亲只有一个,考虑只维护儿子的答案,父亲特判处理一下即可。 考虑我们要做什么操作?单点修改,全局 +1+1+1,求全局异或值。考虑 01-Trie 维护。单点修改就是删一个数加一个数,容易维护,全局
阅读全文
摘要:考虑原图如果存在一条从 aaa 到 bbb 的路径,那么新图中 aaa 会向路径上每一个点连边,证明显然。 进一步的,一个强连通分量内部在新图上必然是完全图。 考虑缩点,然后直接朴素 DP 即可,每个 SCC 内每个点都可以走,SCC 之间只能按照 DAG 的走法走。fuf_ufu 和 gug_u
阅读全文
摘要:不会一点字符串算法,考虑哈希。 注意到一个特殊限制是 ∣s∣≤100\left| s\right| \leq 100∣s∣≤100,于是我们可以简单处理出每个点向上不超过 100100100 步的哈希值。 考虑询问答案时怎么处理。我们考虑 sss 在这个串,只有三种。令 L=LCA(u,v)L=\
阅读全文
摘要:考虑 lll 固定时怎么做,每条边的边权是 000 或者 111,求路径上每个极长连续 111 的段长作为下标的 fff 的和。 树剖维护,问题转化成序列问题,只需要维护线段树,每个区间维护对应答案以及左侧连续 111 长度和右侧连续 111 长度,合并时容易更新答案。 现在 lll 不固定,考虑离
阅读全文
摘要:马上省选了不会欧拉序,来补补。 首先看到动态维护直径比较容易想到的肯定还是 LCT。常见套路是两个连通块合并后的两直径端点必然是原来两个连通块 444 个直径端点中的其二。证明显然。新直径要么是原来两个连通块直径,要么经过这条新的边。又一个点到树上最远距离的点一定是直径端点之一,结论必然成立。 于是
阅读全文
摘要:考虑题目中的这个限制是有些困难的,但是细想,其实这个限制没有意义,要求的就是每个区间的最大可空前缀和加上最大可空子段和的和。 首先我们证明这东西是对的: 考虑反证。假如选的前缀是 [1,i][1,i][1,i],子段是 [l,r][l,r][l,r]。假如这一选择是最优的,且 i∈[l,r)i \i
阅读全文
摘要:事实上一个区间的答案就是区间和减去 ppp 乘以减去的次数。 于是问题难点在于如何求一个区间减去的次数。 注意到 n≤106n \leq 10^6n≤106,猜测这可能不是根号科技。考虑朴素线段树。容易观察到的一点是,对于每个区间,假设进去时的初始值为 xxx。然后依次加上区间每个数并取模的时候,x
阅读全文
摘要:事实上一个区间的答案就是区间和减去 ppp 乘以减去的次数。 于是问题难点在于如何求一个区间减去的次数。 注意到 n≤106n \leq 10^6n≤106,猜测这可能不是根号科技。考虑朴素线段树。容易观察到的一点是,对于每个区间,假设进去时的初始值为 xxx。然后依次加上区间每个数并取模的时候,x
阅读全文
摘要:不妨令 a≤b≤ca\leq b\leq ca≤b≤c。如果题目输入的不满足则可以交换。我们只考虑构造两个大小分别为 aaa 和 bbb 的连通块。其他点全都在 CCC 中。考虑如果选的大小不是 aaa 和 bbb 连通块,比如选的是 aaa 和 ccc,那么可以把 CCC 中某些点删掉并不影响连通
阅读全文
摘要:假如每次询问的点 xxx 是同一个点怎么做?我们考虑将这棵无根树看作以 xxx 为根的树,设根 xxx 的深度为 000,那么每个点到 uuu 的距离就是这个点的深度 depudep_udepu。删掉一个点 yyy 本质上就是删掉以 yyy 为根的这棵子树,询问相当于问全局最大值。每个删除的点显然
阅读全文