随笔分类 - 题解
摘要:考虑题目中的这个限制是有些困难的,但是细想,其实这个限制没有意义,要求的就是每个区间的最大可空前缀和加上最大可空子段和的和。 首先我们证明这东西是对的: 考虑反证。假如选的前缀是 [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 为根的这棵子树,询问相当于问全局最大值。每个删除的点显然
阅读全文
摘要:注意到如果 lll 中最大的两个数之和 >d>d>d,显然无解。 比较容易想到的是,我们先构造一条边权和为 ddd 的链,然后考虑讲其他边全都连在一个点上,这样显然是优的。 考虑这个点两边边权到链顶点距离和分别为 x,yx,yx,y,那么考虑除链上的边权最大值 zzz,必然要满足 z≤xz \leq
阅读全文
摘要:挺典的题。 考虑添加一个海港的贡献。用 set 维护目前的全部海港,显然只有在这个点前驱后继这一段区间会被修改。 注意到修改总是区间加等差数列。询问是区间和。线段树维护差分即可。复杂度 O(nlogn)O(n \log n)O(nlogn)。 #include <bits/stdc++.h> us
阅读全文
摘要:特判如果排列初始时是 1,2,⋯ ,n1,2,\cdots,n1,2,⋯,n,输出 n−2n-2n−2。 如果不是,那么我们交换两个后的结果一定大于等于初始值。 考虑新增的贡献是什么?假设交换 pi,pj(i<j)p_i,p_j(i < j)pi,pj(i<j),那么新增的贡献必然是一个 k∈[
阅读全文
摘要:先考虑 nnn 比较小的时候怎么做。 非常显然地,按照线段树建树,枚举每个点作为 LCA 的答案。假设当前节点 uuu,对应区间 [l,r][l,r][l,r],区间长度 len=r−l+1len = r-l+1len=r−l+1,那么对答案的贡献为 u×(2⌈len2⌉−1)×(2⌊len2⌋−1
阅读全文
摘要:有一种比较暴力,不需要组合数的 DP。 先考虑在 G1 的限制(即 n≤100n\leq 100n≤100)下怎么做。 有一个比较显然的 DP,fi,j,kf_{i,j,k}fi,j,k 表示前 iii 个,长度为 jjj,最后一个的颜色为 kkk。转移时可以朴素地 O(1)O(1)O(1) 转移
阅读全文
摘要:显然我们要解决的主要问题就是能“陀螺无限”的充要条件。我们坚信推出来后是可以维护的。 我们设我们要打出的这些牌的 a,ba,ba,b 分别是 a1,a2,⋯ ,aka_1,a_2,\cdots,a_ka1,a2,⋯,ak 和 b1,b2,⋯ ,bkb_1,b_2,\cdots,b_kb1,b
阅读全文
摘要:比较简单的费用流。 考虑这样一个建模:SSS 连向每个 aia_iai,容量为 111,费用为 000,每个 aia_iai 连向所有 bj(j≥i)b_j(j \geq i)bj(j≥i),容量为 111,费用为 aia_iai。现在我们要考虑怎么使得恰好选 kkk 个。显然可以每个 bi
阅读全文
摘要:题意: 给定 nnn 个三元组 (ai,bi,ci)(a_i,b_i,c_i)(ai,bi,ci),求 1≤i,j,k≤n1\leq i,j,k \leq n1≤i,j,k≤n 且 i,j,ki,j,ki,j,k 互不相等,满足 ai>max{aj,ak},bj>max{bi,bk},ck
阅读全文
摘要:考虑按照 444 维依次作为关键字排序,那么就是求这个序列的最长不降子序列,其中每一维度都要不降。 显然的 fif_ifi 表示以 iii 结尾的最长上升子序列,排序后有 fi=(maxj∈[1,i)∧bj≤bi∧cj≤ci∧dj≤difj)+1f_i= (\max \limits_{j \in
阅读全文
摘要:先考虑怎么判断 −1-1−1。 对于 ∣Ti∣=2|T_i|=2∣Ti∣=2,我们考虑连无向边 Ti,1↔Ti,2T_{i,1} \leftrightarrow T_{i,2}Ti,1↔Ti,2。对于 ∣Ti∣=1|T_i|=1∣Ti∣=1,连自环 Ti,1↔Ti,1T_{i,1} \lef
阅读全文
摘要:线段树合并被卡常了。 这个题的题意有些瑕疵,即 ddd 的范围。如果 ddd 大于等于 uuu 子树最大距离,那我可以任意取 ddd,这个集合岂不是无穷大了? 实际上是,输入的时候存在 ddd 大于等于这个最大距离,但我们求的 d′d'd′ 的取值必须小于等于子树最大距离。 接着考虑做法: 显然我们
阅读全文
摘要:121212 秒,范围 10610^6106,猜测可能是根号算法。 考虑根号分治。设阈值为 BBB,对于修改操作,如果涉及修改的点数 ≤B\leq B≤B,直接暴力修改并维护 sumysum_ysumy 表示 yi=yy_i=yyi=y 的点在暴力操作下的点权和。否则打标记,维护这种 xxx 平
阅读全文
摘要:先考虑暴力 O(nm)O(nm)O(nm) 怎么做。 我们肯定是把区间中某一个数全部删掉。维护 fif_ifi 和 gig_igi 分别表示 iii 前面第一个和 aia_iai 相等的位置和后面第一个。不存在时,fi=0,gi=n+1f_i=0,g_i=n+1fi=0,gi=n+1。 考
阅读全文
摘要:很容易想到离线扫描线。 考虑离线从 111 到 nnn 扫描 rrr,同时开一棵线段树,线段树每个位置都是 000 或 111,第 iii 个位置表示 [i,r][i,r][i,r] 中出现过的数的个数奇偶性。对于 i>ri>ri>r,默认这个点为 000。则每个询问都是扫描到对应的 rrr 时刻,
阅读全文
摘要:经典套路是一个数一直求 gcd\gcdgcd,在 O(logV)O(\log V)O(logV) 的变化次数内会变成 111。注意变化次数不是操作次数,也就是说这个数在操作过程中不同取值只有 O(logV)O(\log V)O(logV)。 考虑一个集合 S={s1,s2,⋯ ,sn}S=\{
阅读全文