首页 > 其他分享 >CF1842H

CF1842H

时间:2023-10-30 20:36:20浏览次数:20  
标签:排列 CF1842H mask leq 枚举 绝对值 0.5

传送门

description

洛谷翻译

solution

考虑分析一下不等式 \(x_i+x_j\leq 1\)。

  • 如果 \(x_i,x_j\leq 0.5\),一定成立;

  • 如果 \(x_i,x_j>0.5\),一定不成立;

  • 如果 \(x_i,x_j\) 中一个 \(>0.5\),一个 \(\leq 0.5\),不妨设 \(x_i\leq 0.5\),则要求 \(0.5-x_i\geq x_j-0.5\)。

可以发现,前两种情况比较简单,后一种情况和 \(x_i\) 与 0.5 差的绝对值有关,于是我们不妨把所有数向左平移 0.5,看起来更舒服。原要求变成 \(x_i+x_j\leq 0\)。

一个不难想的做法是枚举有哪些数是 \(\leq 0\) 的,这样就可以把所有不等式转化为 \(|x_i|\leq |x_j|\) 的形式。所有合法的绝对值的大小排列除以 \(2^nn!\) 就是这种情况对答案贡献的概率(因为每种 \(n\) 个数的大小关系是随机的,规定一个数正负号的概率是 \(\frac{1}{2}\))。但是后面这个部分相当于求一张图的拓扑序数量,没有多项式复杂度的做法,加上前面 \(2^n\) 枚举,复杂度式不能接受的。

我们尝试不去枚举哪些数是 \(\leq 0\) 的。设 \(f_{mask}\) 表示选出点集为 \(mask\) 的合法的绝对值大小关系排列的数量。根据上面的推导,最后乘上系数 \(\dfrac{1}{2^nn!}\) 就是答案。

我们枚举 \(mask\) 中绝对值最大的数 \(x_i\),如果它能够作为负数存在于排列中,要求不存在有限制 \(x_i+x_j\geq 0\) 的 \(x_j\) 在排列中;作为非负数同理。

对于 \(x_i+x_i\leq 0\) 这类的限制,还要求 \(x_i\leq 0\),需要特别注意一下。

细节见代码。

code

Submission #230485940 - Codeforces

标签:排列,CF1842H,mask,leq,枚举,绝对值,0.5
From: https://www.cnblogs.com/FreshOrange/p/17798703.html

相关文章

  • 题解 CF1842H【Tenzing and Random Real Numbers】
    看了题解。好难受,想用积分求概率,算了半天。发现没啥规律,不是不能算,就是太可怕了。Problem有\(n\)个\([0,1]\)范围内的均匀随机变量\(x_{1\cdotsn}\)和\(m\)条限制,每条限制形如\(x_i+x_j\le1\)或\(x_i+x_j\ge1\)。请你求出所有限制均满足的概率。对\(998244353\)......