摘要:
CF578D 这道题还是挺有意思的。 题意简单,就是让你求出与模式串 \(S\) 长度均为 \(len\) 的最长公共子序列为 \(len-1\) 的字符串 \(T\) 的数量。 首先在 \(T\) 固定的情况下求最长公共子序列,就是经典的 dp 式子,不再多说。 那么对于 dp 式 \(dp_{i 阅读全文
摘要:
根据题意,我们容易发现只要我们得到了每一条边被经过的期望次数就可以给这些边编号。 设 \(d_x\) 表示点 \(x\) 的度数。 所以我们先用高斯消元求出每个点被经过的期望次数 \(f_x\),那么 $E(u,v) = \frac{f_u}{d_u} + \frac{f_v}{d_v} $。 然后 阅读全文
摘要:
纯粹是自己太唐导致的 我们发现其实这两种操作是独立的,并不需要考虑操作的相对顺序。 这时候就有两种解决顺序: 先子树加再链减 先链减再子树加 由于我一开始看错题了,所以我选了第一种思路,然后就爆炸了。 所以我们选第二种,钦定 \(d_x = a_{fa_x} - a_x\),那么最后子树加的时候要保 阅读全文
摘要:
发现至少有 \(\frac{S}{5}\) 个 \(1\),所以考虑维护 \((k,T-k)\) 的对数,然后二进制拆分+维护区间连续段背包 dp 即可。 点击查看代码 #include<bits/stdc++.h> #define fir first #define sec second #def 阅读全文
摘要:
想法还是太过于巧妙了。 首先有一个很简单的容斥 \(n^2\) 做法。 然后我们能发现 \(mod\) 很小,注意:\(\forall_{1 \le i < mod}\) \(C_{mod}^{i} = 0\)。 所以就有个天才的做法,将矩阵沿着对角线切开,类似这样: 如果我们每隔 \(mod\) 阅读全文
摘要:
好题 先不考虑 \(b\) 序列的计数,我们先考虑构造 \(a\) 序列。 由于是区间 min,所以考虑从小到大填数(类似笛卡尔树),所以设 \(dp_{l,r,k}\) 表示在 \([l,r]\) 的区间中填的数都 \(\le k\),那么就有了转移式 \(dp_{l,r,k} = \sum_{i 阅读全文
摘要:
小学数学题 题意进行转化:询问点 \((X,Y)\),是否满足 \(\forall_{i \in S} (X-x_i)^2 + (Y-y_i)^2 \le x_i^2 + y_i^2\)。 简单化简一下得到:\(X^2 + Y^2 \le 2Xx_i + 2Yy_i\)。 也就是要维护 \(2Xx_ 阅读全文
摘要:
很妙的题目。 首先可以将询问给离线下来,将一条边的边权更改变为在 \([l,r]\) 的时间段中的权值为 \(w\),所以考虑线段树分治。 然后我们发现要求的就是每个时间的最小生成树,那我们如何优化复杂度呢? 我们有一个容易想到的方法: 对于时间段 \([l,r]\),设这段时间中未被更改的边集为 阅读全文
摘要:
经典题目,对于绝对众数只需要考虑这一个序列的中位数在序列中出现次数是否大于一半即可。 这道题用线段树合并维护一下就做完了。 点击查看代码 #include<bits/stdc++.h> #define fir first #define sec second #define int long lon 阅读全文
摘要:
逆天贪心 设对于一个点 \(x\) 花费 \(d\) 步能走到的最左边为 \(L_{x,d}\),最右边为 \(R_{x,d}\)。 主要证明一个东西:若 \((a,b)\) 这个询问中区间 \([L_{a,x},R_{a,x}]\) 与 \([L_{b,y},R_{b,y}]\) 有交,那么必然存 阅读全文