首页 > 其他分享 >闲话 24.7.12

闲话 24.7.12

时间:2024-07-12 16:19:42浏览次数:19  
标签:12 frac 闲话 24.7 right 权值 partial 2n left

闲话

????这luogu编译器怎么回事
在本地和 at 上都能过编,在luogu上就过不了?
xdm有遇到过这种事情的吗

推歌:朝死暮生 by 北山薇 et al. feat. 洛天依AI

补题

P10324

对一棵 \(2n + 1\) 个点的有标号树,称它是好的,当且仅当树上每个点具有一个 \(\{0, 1, 2\}\) 中的权值,其中恰有 \(1\) 个权值为 \(2\) 的点,\(n\) 个权值为 \(0,1\) 的点,并使得不存在一条边的两个端点权值相同。

给定 \(n\),对不同的 \(\text{typ}\),您需要回答不同的问题:

\(\text{typ} = 0\):计数 \(2n + 1\) 个点的好树。
\(\text{typ} = 1\):对每棵好树,我们需要在删除权值为 \(2\) 的点以及对应边后,在每个极大联通子树内选择恰好一个点做标记。计数做标记的可能方案。

这个题还算好 specify 的,所以写一下(

题面经过转化了。首先因为权值为 \(2\) 的点只有一个,我们可以将它视为树根,并将连在它上面的点视作对应子树的根。这样子问题(一棵极大联通子树)就变为有标号有根树了,而这是较为简单的。称一棵有标号有根树是好的,当且仅当树上每个点具有一个 \(\{0, 1\}\) 中的权值,并使得不存在一条边的两个端点权值相同。令 \([x^ny^m/n!m!]F_k(x, y)\) 计数根的权值为 \(k\),由 \(n\) 个权值为 \(0\) 的点、\(m\) 个权值为 \(1\) 的点组成的有标号有根树。那么根据有标号 \(\text{Set}\) 构造的生成函数翻译,自然有

\[\left\{\begin{aligned} F_0 = x\exp F_1 \\ F_1 = y\exp F_0 \end{aligned}\right.\]

但这题怎么会让你这么轻易完成 analyse 呢?让我们先看看 \(\text{typ} = 1\)……

我们首先考察可以作为权值为 \(2\) 的点的子树的组合类对应的 egf,容易知道这就是 \(F_0 + F_1\)。那么仍然是无顺序排列,我们知道答案就是

\[\left[\frac{x^ny^n}{n!n!}\right] \exp (F_0 + F_1) \]

还挺简单的!就是公式的排版有点难看(

二元拉格朗日反演知道这就是

\[\begin{aligned} & \left[\frac{x^ny^n}{n!n!}\right] e^{x + y} e^{nx} e^{ny} \left\lvert \begin{matrix} 1 & -x \\ - y & 1 \end{matrix} \right\rvert \\ = \ &\left[\frac{x^ny^n}{n!n!}\right] e^{(n + 1)(x + y)}(1-xy) \end{aligned}\]

可以贡献出 \(x^i y^j\) 项的只可能是 \((x + y)^{i + j}\)。所以知道

\[[x^my^m] e^{(n + 1)(x + y)} = [x^my^m] (n + 1)^{2m} \dfrac{(x + y)^{2m}}{(2m)!} = \binom{2m}{m}\dfrac{(n + 1)^{2m}}{(2m)!} \]

因此原式

\[\begin{aligned} \\ = \ & (n!)^2 \left(\binom{2n}{n} \frac{(n + 1)^{2n}}{(2n)!} - \binom{2n - 2}{n - 1} \frac{(n + 1)^{2n - 2}}{(2n - 2)!}\right) \\ = \ & (n + 1)^{2n} - n^2(n + 1)^{2n - 2} \\ = \ & (n + 1)^{2n - 2}(2n + 1) \end{aligned}\]

可以 \(O(\log n)\)。还挺简单的!

但这题怎么会让你这么轻易完成 analyse 呢?让我们再看看 \(\text{typ} = 1\)……

这是什么?我们还是需要每个子树的组合类对应的 egf \(F_0 + F_1\),但这次,这个函数里每个 \(x^ny^m\) 项的贡献要乘以 \(n + m\)。也就是,我们需要实现一个算子,使得 \(x^ny^m \rightarrow (n + m)x^ny^m\),自然想到了求导。因此我们只需要设计 \(x\dfrac{\partial}{\partial x} + y\dfrac{\partial}{\partial y}\),就可以分别取得两个占位元的指数了。因此记 \(\dfrac{\partial}{\partial x}\) 为 \(\partial_x\),我们知道答案就是

\[\left[\frac{x^ny^n}{n!n!}\right] e^{(x\partial_x + y\partial_y)(F_0 + F_1)} \]

受 \(\text{typ} = 0\) 的启发,我们仍然希望使用多元拉格朗日反演来击破复合的形式。然而目前的结构有求导,无法立即使用拉反。因此我们需要找到 \(\partial F_k \to F_0, F_1\) 的具体关系。首先对方程组对 \(x\) 求偏导,得到

\[\partial_x F_0 = e^{F_1} + x \left(\partial_x F_1\right)e^{F1} = e^{F_1} + \left(\partial_x F_1\right) F_0 \]

\[\partial_x F_1 = y (\partial_y F_0) e^{F_0} = F_1 (\partial_y F_0) \]

得到

\[x\partial_x (F_0 + F_1) = \frac{F_0(1 + F_1)}{1 - F_0 F_1} \]

真行啊这?这其实引发了我的一个疑问,我们能在多严格的限制条件下保证存在这样一个关系,或者断言它不存在?这问题暂且搁置,目前的处理方法还比较依赖某些看似独立的性质。

对 \(y\) 求偏导得到了相同的结构,我们需要计算的就是

\[\left[\frac{x^ny^n}{n!n!}\right] \exp \left( \frac{F_0 + F_1 + F_0F_1}{1 - F_0F_1}\right) \]

现在就能做拉反了。拉反完得到

\[\begin{aligned} \\ = \ & \left[\frac{x^ny^n}{n!n!}\right] \exp \left( \frac{x + y + 2xy}{1 - xy}\right) e^{n(x + y)} (1 - xy) \end{aligned}\]

现在要考虑减元了。减元的进行,大多时候要么是直接找到一个元的系数,要么是换元后找到一个元的系数。注意到这式子是关于 \(x, y\) 完全对称的,这也会让我们找到系数的难度增加——因为提取哪个元完全是一样的。那么我们不妨通过换元,直接破坏掉这一性质。

启发我们的是我们要提取的系数,我们如果做换元 \(u = xy, v = y\),那么要提取的就是 \(u^nv^0\) 次项。这应当会大大简化减元的过程。我们目前的目标是确定形式 laurent 级数(占位元为 \(v\))的常数项。于是有

\[\begin{aligned} \\ = \ & \left[\frac{u^nv^0}{n!n!}\right] \exp \left( \frac{u/v + v + 2u}{1 - u}\right) e^{n(u/v + v)} (1 - u) \\ = \ & (n!)^2\left[u^nv^0\right] (1 - u) \exp \left( \frac{u/v + v + 2u}{1 - u} + n(u/v + v)\right) \\ = \ & (n!)^2\left[u^nv^0\right] (1 - u) \exp \left\{(u/v + v)\left(\frac{1}{1-u} + n\right) + \frac{2u}{1-u}\right\} \\ = \ & (n!)^2\left[u^nv^0\right] (1 - u) \exp \left(\frac{2u}{1-u}\right) \sum_{i\ge 0} \left(n + (1 - u)^{-1}\right)^i \frac{(u/v + v)^i}{i!} \end{aligned}\]

这里考虑最后一个求和都枚举了些什么。我们需要的是 \([v^0](u/v + v)^i\),这也就要求了 \(i = 2k\),这样就有

\[[v^0](u/v + v)^i = [v^0](u/v + v)^{2k} = \binom{2k}{k} u^k \]

得到

\[\begin{aligned} \\ = \ & (n!)^2\left[u^n\right] (1 - u) \exp \left(\frac{2u}{1-u}\right) \sum_{k\ge 0} \left(n + (1 - u)^{-1}\right)^{2k} \frac{1}{(2k)!} \binom{2k}{k} u^k \\ = \ & (n!)^2\left[u^n\right] (1 - u) \exp \left(\frac{2u}{1-u}\right) \sum_{k\ge 0} \frac{\left(n + (1 - u)^{-1}\right)^{2k}}{(k!)^2} u^k \\ = \ & (n!)^2\left[u^n\right] (1 - u) \exp \left(\frac{2u}{1-u}\right) {}_1F_2 \left( \left.\begin{matrix} 1\\1, 1 \end{matrix}\right\rvert \frac{u\left(n(1-u) + 1\right)^{2}}{(1-u)^2}\right) \end{aligned}\]

可以 \(O(\sqrt n \log n)\),这是一个 29 阶整式递推(如果我没记错的话)。

不是?为啥我同一份代码开同样的编译选项,在P1001能过编,在P10324过不了编啊???????
问题很可能出现在 ode_pFq(const vector&, const vector&) 的调用上。就算这个函数是空的(只有返回值),也没法阻止编译失败。
算了,就当我过了吧。

code
signed main() {
	int typ, n;
	cin >> n >> typ;
	if (typ == 0) {
		cout << 1ll * qp(n + 1, 2 * n - 2) * (2 * n - 1) % mod; 
	} else {
		pfrac A;
		A.x = { Z(n + 1), Z(mod - n) };
		A.x = A.x * A.x * topoly("x"_p);
		A.y = { Z(1), Z(mod - 1) };
		A.y = A.y * A.y;
		ODE ans = ode_power(1).composite(topoly("1 - x"_p)) *
				  ODE_EXP.composite(pfrac(topoly("2x"_p), topoly("1 - x"_p))) * 
				  ode_pFq({}, {1}).composite(A);
		cout << 1ll * p_recur(n, ans.recur(min(40, n), {1, "x^2 + 2x + 2"_p.eval(n), ("x^4 + 4x^3 + 10x^2 + 20x + 21"_p * gifc(2) * gifc(2)).eval(n)}), ans.trans_poly()) * gfac(n) % mod * gfac(n) % mod << endl;
	}
}

标签:12,frac,闲话,24.7,right,权值,partial,2n,left
From: https://www.cnblogs.com/joke3579/p/-/chitchat240712

相关文章

  • 高级java每日一道面试题-2024年7月12日
    如果有遗漏,评论区告诉我进行补充面试官问:你对IO流了解多少我回答:一.什么是JavaIO流?回答:JavaIO流是用于处理输入和输出操作的一组类和接口。它允许程序从不同的数据源(如文件、网络连接、内存缓冲区等)读取数据或将数据写入到不同的目标位置。IO流分为字节流和......
  • day10-stack&Queue-part01-7.12
    tasksfortoday:1.理论基础2.232用栈实现队列3.225用队列实现栈4.20有效的括号5.1047删除字符串中所有相邻重复项--------------------------------------------------------------------------1.理论基础stack:firstinlastout     head    ......
  • #BAS3123. 【例21.3】 字符类型判断
    3123:【例21.3】字符类型判断【题目描述】输入一个字符,判断该字符是否大写字母、小写字母、数字字符或其他字符。分别输出对应的提示信息。【输入】输入为一个字符。【输出】如果该字符是大写字母,则输出" upper ";若是小写字母,则输出" lower ";若是数字字符,则输出" di......
  • Solution - Atcoder ARC127E Priority Queue
    考虑转化一下,每个最后留下来的集合都相对的对应着一个被删除的集合。于是考虑去对被删除的数去计数。然后贪心的,去让每一次\(2\)操作删除的数都是前面加入中还剩下的最后加入的数(因为有的可能被前面的\(2\)操作删了)。对于证明,考虑到如果不是剩下的最后加入的,那么中间可能会......
  • 2024.7.12 模拟赛
    A容易观察到每个“\(1\)”相当于是独立的,那么其位置越靠后越优,则对于\(i=1\ton-1\),每次都为\(a_i\)选择一个最大的满足\(i+2^t\leqn\)的\(t\)全部进行操作最优。使用__builtin_clz函数做到\(O(n)\),暴力算\(t\)做到\(O(n\logV)\)。B要想求出每个前缀的答案,就......
  • HDU 1213 How Many Tables
    题目链接:HDU1213HowManyTables思路    经典并查集,将互相认识的人全部放在一个集合内,然后计算有几个集合就有几个桌子。代码#include<iostream>usingnamespacestd;#definelllonglongconstintN=1e3+10;intfa[N];voidinit(intn){for(i......
  • P1262 间谍网络 题解
    题目描述给你一个有向图,可以付出代价获取一些指定的点。在获取之后要求能以获取的点为出发点,将整个图都访问到,求最小的代价。思路既然需要令总的代价最少,那么如果通过买一个点就可以访问到的所有点,自然会比买两个点的方案更优。于是自然的就可以联想到可以将图划分成很多个强......
  • 别再调情了,去月球吧!《带我飞向月球》7月12日首映!看斯嘉丽如何演绎太空竞赛时代的浪漫
    总体情况带我飞向月球 FlyMetotheMoon(2024)发行日期2024年7月12日导演格雷格·伯兰蒂演员斯嘉丽·约翰逊、伍迪·哈里森、查宁·塔图姆、吉姆·拉什、雷·罗曼诺、彼得·雅各布森、乔·克里斯特、科林·伍德尔编剧基南·弗林、罗斯·吉尔罗伊、比尔·柯......
  • Day1:20240712做题目
     1.Verilog语言是直接连接,不叫赋值。assign变量a=2'b00;//前面是位数,后面是二进制。 2.Verilog中,wire或者其他信号是直接传递(值)的。assigna=b //实时传递,b的值发生变化,a也会立即变化aninputportisadriverorsource,whileanoutputportisasink.//输入......
  • 2024.6 - 2024.7 gzez 联训总结
    NOI2024之前的联训。现在对分数有了概念。Ag=~150pts,Au=~220pts,但是每次考试都只能在80pts左右徘徊喵。但是每年NOI难度差别据说有点大,所以仅供参考。试题基本有梯度,不按难度排序。本文中T1/T2/T3指按照难度排序后题目的顺序编号。1.现状自从上次rdfz训练完后......