随笔分类 - 学习总结
摘要:基础算法 二分。NF0925A,NF1018C,NF1019A(二次函数顶点),NF1110C(第 \(k\) 大,随机二分,双指针),Gym104128D(更改贡献方式),P6142(贪心),P2824(转化为 01 排序),NF1011A(三分),CF48F(二分+nth_element 是 \
阅读全文
摘要:P5892 有一个很明显的 \(O(n^2\log n)\) 暴力,也就是枚举左右端点,然后区间查询前 \(k\) 大。 主席树即可维护前 \(k\) 大。 考虑优化,盲猜决策单调性,于是用分治法求出。 P4067 答案是 \(全部和-k 以内的和-(全部个数- k 以内数目)\times k\)。
阅读全文
摘要:P4766 [CERC2014] Outer space invaders 不难发现时间的先后顺序是不重要的。所以把时间转化到数轴上。 数据范围提示区间 dp,设 \(f_{l,r}\) 表示 \([l,r]\) 时间里面全部消除的代价。 \(f_{l,r}=\max(f_{l,k}+f_{k,r}
阅读全文
摘要:P4764 值域为 \([l,r]\) 的生成森林,也就是把值 \(\ge l\) 的边拿出来生成森林,其中边 \(\le r\) 的权值和。 我们现在要求所有 \(l\),$\ge l $ 边的生成森林中边有哪些。 考虑从大往小加边,设当前加入第条边 \((u,v,w)\)。 因为这条边最小,所以
阅读全文
摘要:CF1508D 经典套路,把 \(i\) 向 \(a_i\) 连边,形成若干的置换环。 注意到我们对于一个环,可以令其变成一个菊花,即不断地对一个点操作消去出边。 如果只有一个环,那么问题轻松解决。 如果有多个环呢,交换其中两个环中的一对就可以变成一个环。 把剩下的点进行极角排序,然后相邻的两个点进
阅读全文
摘要:CF1793F 有一个朴素的想法,使用不删除莫队,使用一种数据结构维护相邻元素的差,\(O(n\sqrt q \log n)\)。 可以通过链表加不增加莫队,维护最小值,使用值域分块,\(O(n\sqrt q+q\sqrt n)\)。 即使如此,也因为常数过大无法通过。 考虑使用扫描线,从右往左扫描
阅读全文
摘要:CF1835C 先前缀和,找 \([x,y]\) 和 \([l,r]\),使得 \(s_{x-1}\otimes s_y\otimes s_{l-1}\otimes s_r=0\)。 因为 \(s_{x-1},s_y,s_{l-1},s_r\) 可以随意交换,如果我们找到了两个区间,我们只需要把相交
阅读全文
摘要:CF1868C 首先想拆开每条路径的贡献。 对于一条路径,长度为 \(len\) 枚举最大值为 \(x\),那么贡献是 \(x\times(x^{len}-(x-1)^{len})\times m^{n-len}\)。 其中 \(x^{len}-(x-1)^{len}\),表示最大值小于等于 \(x
阅读全文
摘要:CF1845E 这种 \(01\) 串的描述方式一般是提出 \(1\) 的位置去讨论,设原串 \(1\) 出现位置是 \(p_1,...,p_m\). 考虑最后生成的串的性质,描述其 \(1\) 的位置,\(q_1,...q_m\)。 那么至少移动步数为 \(\sum |p_i-q_i|\),因为
阅读全文
摘要:CF1887C 首先容易想到区间加需转化为差分,字典序的比较呢就考虑二分哈希。 二分第一个不一样的位置,这个位置也一定是差分数组第一个不一样的。 把哈希如果放到线段树上,那么在线段树上二分即可。 我们依次处理修改的时候,顺便处理当前的最小的字典序。 我们这里如果采用主席树,那么会发现空间过大,无法通
阅读全文
摘要:CF1794E 我们现在考虑换根 dp,维护每个点为根的深度集合。 考虑哈希,我们令深度为 \(d\) 的点贡献是 \(base^d\)。 那么,\(f_u=1+\sum f_v\times base\)。换根时容易的。 由于题目给的是大小为 \(n-1\) 的集合,我们判断两个集合哈希值的差是否是
阅读全文
摘要:CF1657E 发现充要条件即为对于每个点 \(i\),其与 \(1\) 的连边为其所有连边中最小的。 这 \(dp_{i,j}\) 表示处理了 \(i\) 个点,当前与 \(1\) 连的最大的边长度是 \(j\)。 \(dp_{i,j}=\sum_{t=1}^{i-1}(\sum_{x=0}^{j
阅读全文
摘要:CF1797E 设 \(f(x,y)\) 表示 \(x,y\) 要相同最大的变成多少。 由于 \(\varphi\) 最多只需要做 \(\log\) 次就可以到 \(1\),所以这是可以直接暴力的。 我们现在只需维护区间 \(f\) 的值,外加区间取 \(\varphi\)。 区间取 \(\varp
阅读全文
摘要:CF285E 如果我们强制令 \(i\) 个位置满足 \(|P_i-i|=1\),其他任意,记这个方案数是 \(F(i)\). 对于恰好有 \(m\) 个位置满足条件的,记其为 \(G(i)\),发现 \(F(m)=\sum_{i=m}^n C_i^m\times G(i)\) 这是因为每个恰好 \
阅读全文
摘要:P6009 Non-Decreasing Subsequences P 由于值域很小,dp 的转移不难想到写成矩阵的形式。 考虑维护矩阵的前缀积和逆前缀积。 然而单次的矩阵乘已经达到 \(O(k^3)\) 超时了,但是我们发现其实矩阵非 \(0\) 的位置是 \(O(k)\) 个的,所以复杂度降到了
阅读全文
摘要:P5665 [CSP-S2019] 划分 考虑贪心,发现一个神秘的性质是,最后一段如果放最小就最优,无论是对前面和对后面都最优。 因为在 \(a>b\) 情况下,\(a^2+b^2<(a+1)^2+(b-1)^2\)。 所以直接维护一个单调队列即可。使用 __int128. P7984 [USACO
阅读全文
摘要:A 你有 \(m\) 个相同的球,球有性能 \(c\),你可以测试 \(x\),若 \(x\ge c\),那么球会碎掉,若 \(x< c\),那么球不碎。 性能的范围 \(n\le 1e5\)。求最多要测试多少次。 首先答案有一个上限是 \(\log n\)。所以令 \(m\to \min(m,\l
阅读全文
摘要:P1552 [APIO2012] 派遣 每个点作为管理者,只需要计算其子树内,最多有多少个人加起来不大于 \(M\),考虑维护前 \(k\) 小的元素。 可以使用左偏树合并。 然而其实可以平衡树合并,每次在平衡树上二分。 P2685 [TJOI2012] 桥 首先,Boss 镇守的桥一定是最短路上的
阅读全文
摘要:CF645F 我们可以计算这样的函数 \(F(x)\) 表示 \(\gcd\) 是 \(x\) 的倍数有多少个 \(k\) 元组。 设 \(x\) 的倍数有 \(cnt_x\) 个数,那么 \(F(x)=C_{cnt_x}^k\)。 根据莫反,\(f(x)=\sum_{x|d} F(d)\mu (d
阅读全文

浙公网安备 33010602011771号