随笔分类 -  题解

摘要:我能说什么!抽象了这! 看到 \(n\le 10\) 的黑题顿感大事不妙。 我们考虑设 \(f(i)\) 表示将 \(n\) 个点划分为至少 \(i\) 个连通块时的方案数。我们可以暴力枚举每个点在哪个连通块里。划分方案是 \(Bell(n)\le 21147\) 的。 显然的,相同块内暂时忽略,不 阅读全文
posted @ 2025-01-23 12:02 长安一片月_22 阅读(19) 评论(0) 推荐(0)
摘要:发现难以维护差值,于是令 \(K=\frac{n+k}2\),这样就把问题转化为了“糖果”比“药片”大的组数为 \(K\) 的情况有多少种。 设 \(dp_{i,j}\) 表示我们用前 \(i\) 个“糖果”和“药片”配对,至少有 \(j\) 组“糖果”比“药片”大,有多少种情况;\(c_i\) 表 阅读全文
posted @ 2025-01-23 11:12 长安一片月_22 阅读(13) 评论(0) 推荐(0)
摘要:我们先假设同种糖间存在差异。 设 \(f_{i,j}\) 表示前 \(i\) 种糖至少有 \(j\) 人拿到的糖和原来一样,\(c_i\) 表示拿第 \(i\) 种糖的人的个数,则有: \[f_{i,j}=\sum_{k=0}^{\min(j,c_i)}f_{i-1,j-k}\binom{c_i}k 阅读全文
posted @ 2025-01-23 10:36 长安一片月_22 阅读(14) 评论(0) 推荐(0)
摘要:显然有一个 \(dp\) 思路。设 \(f_{i,j}\) 表示现在修了 \(i\) 栋楼,从第一栋楼外侧能看到 \(j\) 栋楼的方案数,显然有: \[f_{i,j}=\begin{cases}[i=0](j=0)\\f_{i-1,j-1}+(i-1)f_{i-1,j}(j\ne 0)\end{c 阅读全文
posted @ 2025-01-23 09:42 长安一片月_22 阅读(11) 评论(0) 推荐(0)
摘要:考虑计算一个点的贡献,最后 \(\times n\) 即为所求。 显然一个点的贡献为 \(\sum\limits_{i=0}^{n-1}\binom{n-1}ii^k2^{\frac{(n-1)(n-2)}2}\),则有: \[\sum_{i=0}^{n-1}\binom{n-1}ii^k2^{\f 阅读全文
posted @ 2025-01-23 09:29 长安一片月_22 阅读(13) 评论(0) 推荐(0)
摘要:为什么又是佳媛姐姐啊啊啊! 斯特林数在这道题中不好处理,直接拆开: \[f(n)=\sum_{i=0}^n\sum_{j=0}^i\begin{Bmatrix}i\\j\end{Bmatrix}2^jj! \]\[=\sum_{j=0}^n2^jj!\sum_{i=0}^n\sum_{k=0}^j\ 阅读全文
posted @ 2025-01-23 09:17 长安一片月_22 阅读(13) 评论(0) 推荐(0)
摘要:老师发福利,放了两道一毛一样的题。 考虑无视战术,直接化简: \[\sum_{v=1}^ndis(u,v)^k=\sum_{v=1}^n\sum_{i=0}^k\begin{Bmatrix}k\\i\end{Bmatrix}dis(u,v)^{\underline i} \]\[=\sum_{i=0 阅读全文
posted @ 2025-01-23 09:03 长安一片月_22 阅读(11) 评论(0) 推荐(0)
摘要:后面有一只大大的组合数,考虑下降幂干过去。\(x^k\) 并不好使,这边考虑转化 \(f(x)=\sum a_ix^i=\sum b_ix^{\underline i}\)。 \[\sum_{k=0}^nf(k)x^k\binom nk=\sum_{k=0}^nx^k\sum_{i=0}^mb_ik 阅读全文
posted @ 2025-01-23 08:43 长安一片月_22 阅读(19) 评论(0) 推荐(0)
摘要:第一眼肯定想到容斥。设 \(G(k)\) 表示至少有 \(k\) 种颜色符合要求,\(F(k)\) 表示恰好有 \(k\) 种颜色符合要求。显然 \(k\) 的上界 \(t=\min(m,\lfloor\frac ns\rfloor)\),那么就有: \[G(k)=C_{m}^{k}(k!\prod 阅读全文
posted @ 2025-01-21 10:51 长安一片月_22 阅读(16) 评论(0) 推荐(0)
摘要:乘法并不容易用 FFT 或 NTT 维护,考虑在模意义下化乘为加。 化乘为加主要有两种方法:\(\log\) 和 \(\gamma\)(指标),由于在取模意义下,所以使用后者。 那剩下的部分就是快速幂,用 NTT 加速即可。时间复杂度 \(O(m\log m\log n)\)。 #include<b 阅读全文
posted @ 2025-01-21 09:04 长安一片月_22 阅读(8) 评论(0) 推荐(0)
摘要:首先正难则反,想到答案即为满足第一条要求的回文子序列数量,减去回文子串数量。回文子串数量 \(hash+\) 二分即可,考虑前半部分。 假如我们将一个回文子序列一层层剥开,就会发现它其实是由多个相同的字母对拼成的。那么容易想到把字母 \(a\) 和字母 \(b\) 的贡献分开计算。那第一条要求就可以 阅读全文
posted @ 2025-01-20 08:49 长安一片月_22 阅读(14) 评论(0) 推荐(0)
摘要:《关于贫穷的樵夫拥有 40000 把斧头这件事》。 相当于是多项式乘法,但是得带容斥,具体自己看代码吧。 #include<bits/stdc++.h> using namespace std; const int N=3e5+5; const long double pi=acos(-1); na 阅读全文
posted @ 2025-01-19 10:34 长安一片月_22 阅读(11) 评论(0) 推荐(0)
摘要:这题分三步:葺网(期望)、淀粉质(点分治)、蓉翅(容斥),再佐以芬芳团(FFT),一道巨难无比的 luogu 黑题就诞生了。 期望 先考虑在淀粉树上,\(i\) 点在 \(j\) 点的子树里的概率。实际上这个问题的每种情况相当于是 \(n\) 个点的各种排列方式。这也就相当于,我们在选择 \(j\) 阅读全文
posted @ 2025-01-18 21:25 长安一片月_22 阅读(19) 评论(0) 推荐(0)
摘要:容易发现: \[E_i=\sum_{j=1}^{i-1}\frac{q_j}{(i-j)^2}-\sum_{j=i+1}^n\frac{q_j}{(i-j)^2} \]不妨设 \(a_i=q_i,b_i=\dfrac 1{i^2}\): \[E_i=\sum_{j=1}^{i-1}a_jb_{i-j 阅读全文
posted @ 2025-01-18 14:57 长安一片月_22 阅读(11) 评论(0) 推荐(0)
摘要:看名字,然后准备转化为多项式乘法。 \[c_k=\sum_{i=0}^{n-k-1}a_{i+k}b_i \]将 \(a\) 反转,得: \[c_k=\sum_{i=0}^{n-k-1}a_{n-i-k-1}b_i \]这已经是多项式乘法的格式了,直接多项式乘法,最后对函数 \(c\) 的 \(0\ 阅读全文
posted @ 2025-01-18 11:55 长安一片月_22 阅读(17) 评论(0) 推荐(0)
摘要:个人感觉各方面难度高于《在美妙的数学王国中畅游》,也不知道是不是求导的关系,这题 \(luogu\) 难度评级还更低。不过感觉这题作完对 \(LCT\) 理解更顺畅了。 前四个操作简单,关键在第五人格操作。 注意力惊人的注意到我们无法像普通 \(Splay\) 一样,直接对 \(LCT\) 中的 \ 阅读全文
posted @ 2025-01-09 17:14 长安一片月_22 阅读(19) 评论(0) 推荐(0)
摘要:事实证明物竞笔记是个好东西,可惜没带,不然还能谎称自己会一点求导和微积分。 顺便在这里把比较经典的一些关于求导的东西记录一下: 常用函数求导: \(C'=0,(x^n)'=nx^{n-1},(\log_ax)'=\frac 1{x\ln a}\) \((\ln x)'=\frac 1x,(a^x)' 阅读全文
posted @ 2025-01-09 09:27 长安一片月_22 阅读(15) 评论(0) 推荐(0)
摘要:\(LCT\) 动态维护树上路径最值,典中典了。 时间复杂度 \(O(n\log n)\)。 #include<bits/stdc++.h> #define fa(x) lct[x].fa #define fl(x) lct[x].fl #define mx(x) lct[x].mx #define 阅读全文
posted @ 2025-01-08 18:24 长安一片月_22 阅读(12) 评论(0) 推荐(0)
摘要:名字感觉挺奇怪的。 考虑离线算法。首先答案就是用 \(n\) 减去连完边后的生成树森林边数。生成树当然就可以用 \(lct\) 求解了。我是不会告诉你这个时候我已经开始想回滚莫队了的。 考虑当我们倒序加入 \([l,r]\) 中的边时,哪些边会产生贡献。我们考虑假如我们新加入一条边,与原先的生成树形 阅读全文
posted @ 2025-01-08 18:21 长安一片月_22 阅读(30) 评论(0) 推荐(0)
摘要:最大值最小的路径肯定在最小生成树上,考虑用 \(LCT\) 维护最小生成树,只需要维护长度最长的边即可实现。由于 \(LCT\) 维护最小生成树不支持删边,所以采用倒序加边的方式处理。 时间复杂度 \(O(n\log n)\)。 #include<bits/stdc++.h> #define fa( 阅读全文
posted @ 2025-01-08 14:37 长安一片月_22 阅读(15) 评论(0) 推荐(0)