当前位置: 首页 > news >正文

无锡网站设1688黄页网品种大全2021

无锡网站设,1688黄页网品种大全2021,app开发商城,网络服务平台树的计数 II 题目链接:YBT2023寒假Day12 C 题目大意 给你一个长度为 n 的排列 p,问你有多少个不同的有标号无根树,满足如果 i,j 有边那 pi,pj 也有边。 思路 首先可以把排列变成置换环。 注意到是树,发现一个置换中似乎不太可…

树的计数 II

题目链接:YBT2023寒假Day12 C

题目大意

给你一个长度为 n 的排列 p,问你有多少个不同的有标号无根树,满足如果 i,j 有边那 pi,pj 也有边。

思路

首先可以把排列变成置换环。
注意到是树,发现一个置换中似乎不太可能内部连边,因为很可能会出现环,但显然是有情况可以的。
考虑讨论:
首先大小 111 不需要也就是可以,大小为 222 可以。
然后发现,一个环你表示成 a1,a2,...,aka_1,a_2,...,a_ka1,a2,...,ak,会发现你连 a1,axa_1,a_xa1,ax 至少长度大于 222 都不行。
如果 x≠k/2+1x\neq k/2+1x=k/2+1,那往后推进,就变成了 ax,a2x−1a_x,a_{2x-1}ax,a2x1,再由不等式有着肯定不是 a1a_1a1,那就跳到了一个新的点,那每次都会跳到一个跟之前不一样的点,而且不会停下来,那一定就是成了环而且点的个数大于 222,所以肯定不是树。
然后如果 x=k/2+1x=k/2+1x=k/2+1,会发现变成了 k/2k/2k/2 个连通块,它们内部无法合并,如果要跟外部连就会每个连通块都连出去两条边,一定会变成环,所以也不行。

那简单总结一下就是内部连边只有 k=1/2k=1/2k=1/2 的时候才行。


然后你似乎要考虑一个环是选内部连边还是外部连边。
但是当你内部连边多个的时候,你会发现好像不能把它们连起来。
不过准确来说 111 不许要内部连边,所以 111 可以外部连,但是你 222 似乎不能和另一个 222 内部连边在弄到一起,222 也不能内部连边之后跟 111 连到一起。

也就是说又有了一个结论:
至多只能选一个大小为 222 的环内部连边,而当有大小为 111 的环存在时,不会有内部连边。


接下来考虑外部连边,考虑两个环大小为 x,yx,yx,y 能不能连。
思考一下会发现当我们设 x⩽yx\leqslant yxy 的时候,条件是 x∣yx|yxy
那当 x∣yx|yxy 的时候,显然是可以连边形成 xxx 个连通块的。
那我们考虑证明 x∤yx\nmid yxy 的时候会出现环:
那如果有边 (a0,b0)(a_0,b_0)(a0,b0),就会有 (a0,bx),(aymodx,b0),(aymodx,bx)(a_0,b_x),(a_{y\bmod x},b_0),(a_{y\bmod x},b_x)(a0,bx),(aymodx,b0),(aymodx,bx)
那这四条边就成环了。
所以能连边的条件就是 x∣yx|yxy
那因为有编号,所以还有连边方式,显然连了一个之后后面都确定,那你就可以让一开始那个点最后在哪个连通块,所以是 xxx 个方案。


考虑怎么拼起来:
会发现如果 x<yx<yx<y 的时候,x,yx,yx,y 之间的连边可以说是单向的。
但是 x=yx=yx=y 的时候也可以连边,但是这个是双向的。
那你考虑处理 x=yx=yx=y 的,具体而言就是当有 nxn_xnx 个大小为 xxx 的,我们先算出把它组合成无根树森林的情况,再补上它们接到之前的树上的方案。
那组合成无根树森林,我们可以用 prufer 来搞(弄一个 000 号虚拟点)

但是你会发现接入到原来树中每个位置是取决于你接入的位置的。
考虑把 prufer 变形,考虑 prufer 序列怎么来的:
每次找到编号最大 / 最小的叶子,记录连着它的点,把这个叶子删去直到剩下两个点。
那记录连着它的点这个时候,我们就要乘上这个点代表的大小。
那就原本是贡献 111,现在是贡献 xxx,那我们可以把每个可以贡献的位置 xxx,让它贡献 cntx∗xcnt_x*xcntxx 而不是 cntxcnt_xcntx
那在这里就全是 cntx∗xcnt_x*xcntxx
然后至于 000 号虚拟点,那你可以理解为连向它就是连向之前树中可以连的任意一个,那任意一个都会产生各自的贡献,那你就把每个可以的位置的 cntx∗xcnt_x*xcntxx 加起来即可(记为 sumsumsum)。

不过我们 000 号点是虚拟的,那我们每次选编号大的最后就可以剩下 000 号点。


不过有一个特别特殊的地方是你最后的两条边之间的方案也要记得乘上,那在这里就是 sumsumsum(因为这两个点其中一个一定是 000


然后按着做的就完事了。

代码

#include<cstdio>
#define ll long long
#define mo 998244353using namespace std;const int N = 5e5 + 1000;
int n, a[N], sz[N], tot;
bool in[N];int dfs(int now) {if (in[now]) return 0;in[now] = 1; return 1 + dfs(a[now]);
}ll ksm(ll x, ll y) {ll re = 1; x %= mo;while (y) {if (y & 1) re = re * x % mo;x = x * x % mo; y >>= 1;}return re;
}ll Prufer(int n) {if (n == 1) return 1;return ksm(n, n - 2);
}void slove() {scanf("%d", &n);for (int i = 1; i <= n; i++) scanf("%d", &a[i]);for (int i = 1; i <= n; i++) {if (in[i]) continue;sz[dfs(i)]++;}ll ans = 0, cnt = 0;if (sz[1]) {ans = Prufer(sz[1]);cnt = sz[1];if (sz[2]) {ll num = cnt;(ans *= num * ksm(2 * sz[2] + num, sz[2] + 1 - 2) % mo) %= mo;cnt += sz[2];}}else if (sz[2]) {if (sz[2] == 1) ans = 1;else ans = 2 * ksm(2 * sz[2], sz[2] - 2) * sz[2] % mo;cnt += sz[2];}for (int i = 3; i <= n; i++) {if (!sz[i]) continue;ll num = 0;for (int j = 1; j * j <= i; j++) if (i % j == 0) {(num += 1ll * j * sz[j] % mo) %= mo;//接口*接这个接口的方案if (i / j != j && i / j != i) (num += 1ll * (i / j) * sz[i / j] % mo) %= mo;}(ans *= num * ksm(i * sz[i] + num, sz[i] + 1 - 2) % mo) %= mo;cnt += sz[i];}printf("%lld\n", ans);for (int i = 1; i <= n; i++) in[i] = 0, sz[i] = 0;tot = 0;
}int main() {freopen("count.in", "r", stdin);freopen("count.out", "w", stdout);int T; scanf("%d", &T);while (T--) slove();return 0;
}
http://www.yayakq.cn/news/920701/

相关文章:

  • 一页式网站模板怎样把自己做的网站发到网上
  • 网站优化公司多少钱12380举报网站建设经验
  • 做南美生意做什么网站好企业网站建设的四大因素
  • php 用什么做网站服务器吗深圳网站制作十年乐云seo品牌
  • 嘉兴装修公司做网站线上渠道推广有哪些方式
  • 腾和企业网站管理系统商城版免费网站
  • 十大中文网站排名旅游手机网站模板
  • 徐州网页公司seo范畴有哪些
  • 铁岭做网站信息如何做公司简介介绍
  • 网站出现死链怎么办网站建设需求调研
  • 纯 flash 网站简述无线网络优化的流程
  • 哪些软件可以做网站设计苏州网络推广苏州网站建设
  • 青岛做网站排名微信公众号文章怎么导入wordpress
  • wordpress 企业整站图书购物网站开发的业务分析
  • 网站开发 seo世界500强企业排行榜
  • ai国外教程网站有电脑网站怎样建手机
  • 网站编辑器哪个好集团品牌网站建设
  • 手机欧美视频网站模板下载 迅雷下载 迅雷下载地址网站建设的模板
  • 加强网站的建设工作wordpress wp content
  • 做网站都需要什么工具wordpress忘记了密码
  • 东莞常平做网站公司制作app的专业公司
  • 滴滴优惠券网站怎么做微信开放平台介绍
  • 南通网站建设系统方案wordpress在线编辑慢
  • 如何做网站热力图电商网站建设实验心得
  • 建筑网站翻译编辑做设计常用网站有哪些
  • 网站建设开发招标书建设银行 贷款 查询 网站
  • 企业公司网站管理系统做摄影和后期的兼职网站
  • 域名解析网站打不开网站建设的职称
  • 外国网站英语要求WordPress图片加密
  • 网站用什么开发深圳乐安居网站谁做的