Noip 模拟 14 2018/11/1

T1:白玉楼前(youmu)
妖梦现在要玩幽幽子的游戏,她才能拿回自己的半灵。
游戏规则是这样的:
幽幽子有 n 个点,现在她让妖梦对每个点随机一条出边 (随机到每个点的概率都相等),然后得到一张图。(注意:可以自环)
如果这张图任意一个点沿着边走两步(显然这样的走法唯一)都能到达自身,则幽幽子可以通关。
现在幽幽子想问妖梦,她通关的概率是多少?
两个图不同,当且仅当存在一条边出现在图 A 中且不出现在图 B 中。图中的点有编号,边无编号。
答案 mod 998244353。
提示:答案必定可以表示成 q p \frac{q}{p} pq
的形式,在模意义下, q p = p × q − 1 \frac{q}{p}=p\times q^{-1} pq=p×q1
,其中 q − 1 q^{-1} q1 q q q 的逆元。*
测试的时候,想到枚举二点环数,即可得到 a n s = ∑ i = 1 n C n 2 × i × ∏ j = 1 n 2 ( 2 j − 1 ) ans=\sum_{i=1}^{n}C_{n}^{2\times i}\times\prod_{j=1}^{\frac{n}{2}}(2j-1) ans=i=1nCn2×i×j=12n(2j1)
时间效率 O ( T n ) O(Tn) O(Tn),T 到飞起
考虑新加入一个点时,要么自环,要么和其他点成环
即可得到 dp 式 f [ i ] = f [ i − 1 ] + f [ i − 2 ] ∗ ( i − 1 ) f[i]=f[i-1]+f[i-2]*(i-1) f[i]=f[i1]+f[i2](i1),预处理即可

T2:式神守护(yukari)
紫妈有 n 个隙间排成一列,每个隙间都有一个权值 i val 。
她可以选出某些隙间来召唤式神:一组隙间能成功召唤式神当且仅当他们的权值和为 m 的倍数。(可以是 0 倍)
现在紫妈试图召唤 Q 次式神,每次给出一个 i i l 和 r , 她试图在第 i i l 到 r 个隙间中召唤式神,
她会选择其中一些隙间(不一定需要连续的一些)召唤式神。她想知道,有多少种方案可以成功召唤式神。

会对答案造成贡献的,只有 % m m m 0 0 0 的情况,很容易想到用线段树处理出 0 — ( m − 1 ) 0—(m-1) 0m1的情况,然后 m 2 m^2 m2 合并,查询的时候带着边查边合并就好了,但是时间过不去
考虑分治
对于 r &lt; m i d r&lt;mid r<mid 或者 l &gt; m i d l&gt;mid l>mid 交给下一层去做
对于 l &lt; = m i d r &gt; = m i d l&lt;=mid r&gt;=mid l<=midr>=mid 的情况,记 f [ i ] [ j ] f[i][j] f[i][j] 表示从 m i d mid mid 向左到 i i i 这个位置模数为 j j j 的方案数, g [ i ] [ j ] g[i][j] g[i][j] 表示从 m i d mid mid 向右到 i i i 这个位置模数为 j j j 的方案数, a n s = ∑ i = 0 m − 1 f [ l ] [ i ] ∗ g [ r ] [ m − i ] ans=\sum_{i=0}^{m-1}f[l][i]*g[r][m-i] ans=i=0m1f[l][i]g[r][mi],即类似于整体二分

T3:西行妖下(yuyuko)
幽幽子站在西行妖下,她需要解封西行妖最后的力量。
西行妖可以当作一个有 n n n 个点的树,每个点都有一些符文,初始每个点符文个数为 1 1 1
幽幽子可以施展魔法,将符文随机移动,来解封封印。
每个点上的符文可以看作是一个 1   m 1~m 1 m 的排列,原本的状态为 1 , 2 , 3 , 4 , … … , m 1,2,3,4,……,m 1,2,3,4,,m 按顺序排列 ( m m m 为符文的个数)。想要解封一个点上的封印,要求排列中对于任意的 i i i p i ! = i p_i!=i pi!=i 。幽幽子每次的魔法效果是随机形成一个排列,尝试能否解除封印。
幽幽子每次会走过一条路径,从 s s s t t t,对每个点施展一次魔法,并询问能解封的点的期望个数。
现在有 Q Q Q 次操作:
Add s t x 在 s s s t t t 的路径上每个点加 x x x 个新的符文。
Multi s t x 在 s s s t t t 的路径上,每个点符文个数 × x \times x ×x
Query s t 求从 s s s t t t 解封点的期望个数是多少。
(注意:每次 Query 操作是独立的,即前一次 Query 中施展的魔法在 Query 结束时被立即撤销,所有走过的路径上点的符文排列变为 p i = i p_i=i pi=i,对后续操作不产生影响)

错排的方案数为 f [ i ] = ( f [ i − 1 ] + f [ i − 2 ] ) ∗ ( i − 1 ) f[i]=(f[i-1]+f[i-2])*(i-1) f[i]=(f[i1]+f[i2])(i1),概率即为 f [ i ] i ! \frac{f[i]}{i!} i!f[i]
通过枚举可以发现,概率具有收敛性,值在 i &gt; 20 i&gt;20 i>20 后稳定在 0.367879 0.367879 0.367879 左右(不会证明
那么每个点被修改的次数不会超过 20
在线段树上大力修改单点修改每个点的值即可,套个树剖

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值