A,B 略,C 简单二分。
ABC231D - Neighbors
建出图来,若图有环或者有点的度数大于 2 2 2,则不合法。否则合法。
ABC231E - Minimal payments
由于 A i − 1 ∣ A i A_{i - 1}\mid A_i Ai−1∣Ai,所以对于一个 A i A_i Ai 可以只考虑两种方案:用这个 A i A_i Ai 尽可能凑,或者用更大的面值付然后要找零。
using ll = long long;
int n;
ll a[65], x, ans;
unordered_map<ll, unordered_map<ll, ll> > f;
ll dfs(ll x, int now) {
if (now == 1) return x;
if (f[x][now] > 0) return f[x][now];
ll r = x % a[now], q = x / a[now], p = a[now] - r;
if (r == 0) return q;
ll w1 = q + 1ll + dfs(p, now - 1);
ll w2 = q + dfs(r, now - 1);
return f[x][now] = min(w1, w2);
}
int main() {
read(n, x);
FOR(i, 1, n) read(a[i]);
ans = x;
print(dfs(x, n));
return output(), 0;
}
ABC231F - Jealous Two
相当于给定 N N N 个点 ( a i , b i ) (a_i, b_i) (ai,bi),问满足如下关系的 ( i , j ) (i, j) (i,j) 有多少对:
- 1 ≤ i , j ≤ N 1\le i,j\le N 1≤i,j≤N,其中 i i i 可以等于 j j j。
- a i ≥ a j a_i\ge a_j ai≥aj,且 b i ≤ b j b_i\le b_j bi≤bj。
裸的二维偏序,直接上 cdq 即可。
评测记录,注意这题一定要预先将所有的点去重,否则会漏数偏序关系。
ABC231G - Balls in Boxes
期望牛逼题。大体思路就是拆开期望的式子,利用线性性进行化简。
N N N 个盒子,第 i i i 个盒子一开始有 A i A_i Ai 个球, K K K 次操作,每次操作随机选一个盒子加一个球,最后每个盒子有 B i B_i Bi 个球,问 S = ∏ B i S = \prod B_i S=∏Bi 的期望,对 998244353 998244353 998244353 取模。
答案为 E [ S ] E[S] E[S],令 X i X_i Xi 为表示第 i i i 个盒子被选中次数的随机变量,则我们要的最终答案就是 E [ ∏ i ( A i + X i ) ] E[\prod_i(A_i + X_i)] E[∏i(Ai+Xi)]。考虑 N = 2 N = 2 N=2 的情况,即为 E [ ( A 1 + X 1 ) ( A 2 + X 2 ) ] = E [ A 1 A 2 ] + E [ A 1 X 2 ] + E [ A 2 X 1 ] + E [ X 1 X 2 ] E[(A_1 + X_1)(A_2 + X_2)] = E[A_1A_2] + E[A_1X_2] + E[A_2X_1] + E[X_1X_2] E[(A1+X1)(A2+X2)]=E[A1A2]+E[A1X2]+E[A2X1]+E[X1X2]。
推而广之,对于
n
n
n 个不一样的下标
i
1
,
⋯
,
i
n
i_1,\cdots, i_n
i1,⋯,in,容易知道
E
[
∏
j
=
1
n
X
i
j
]
=
E
[
∏
i
=
1
n
X
i
]
E[\prod_{j = 1}^n X_{i_j}] = E[\prod_{i = 1}^nX_i]
E[∏j=1nXij]=E[∏i=1nXi]。所以提出这个公因式,有
E
[
∏
i
=
1
N
(
A
i
+
X
i
)
]
=
∑
n
=
0
N
S
N
,
n
(
A
1
,
⋯
,
A
N
)
E
[
∏
i
=
1
N
−
n
X
i
]
E\left[\prod_{i =1}^N(A_i + X_i)\right] = \sum_{n = 0}^NS_{N, n}(A_1,\cdots, A_N)E\left[\prod_{i =1}^{N - n}X_i\right]
E[i=1∏N(Ai+Xi)]=n=0∑NSN,n(A1,⋯,AN)E[i=1∏N−nXi]
其中
S
N
,
n
S_{N, n}
SN,n 表示
N
N
N 个变量的
n
n
n 次对称多项式。
现在只需要对于每个 n n n 算出 S N , n ( A 1 , ⋯ , A N ) S_{N, n}(A_1,\cdots, A_N) SN,n(A1,⋯,AN) 和 E [ ∏ i = 1 n X i ] E[\prod_{i = 1}^nX_i] E[∏i=1nXi] 即可。
前者, S N , n ( A 1 , ⋯ , A N ) = [ x n ] ∏ i = 1 N ( A i x + 1 ) S_{N, n}(A_1,\cdots, A_N) = [x^n]\prod_{i =1}^N(A_ix + 1) SN,n(A1,⋯,AN)=[xn]∏i=1N(Aix+1)。这个东西一个分治 NTT 碾过去应该是 O ( n log 2 n ) O(n\log^2n) O(nlog2n) 的。
然后是后者。我们考虑随机变量
X
i
,
j
X_{i, j}
Xi,j 表示第
i
i
i 个盒子在第
j
j
j 次操作是否会被选中(0/1)。则
X
i
=
∑
j
=
1
K
X
i
,
j
X_i = \sum_{j = 1}^KX_{i, j}
Xi=∑j=1KXi,j。枚举一下下标,发现
E
[
∏
i
=
1
n
X
i
]
=
∑
j
1
,
j
2
,
⋯
,
j
n
E
[
∏
i
=
1
n
X
i
,
j
i
]
E\left[\prod_{i = 1}^n X_i \right] = \sum_{j_1, j_2,\cdots, j_n}E\left[\prod_{i = 1}^nX_{i, j_i}\right]
E[i=1∏nXi]=j1,j2,⋯,jn∑E[i=1∏nXi,ji]
然后当
i
1
≠
i
2
i_1\not= i_2
i1=i2 的时候,显然
X
i
1
,
j
X
i
2
,
j
=
0
X_{i_1, j}X_{i_2, j} = 0
Xi1,jXi2,j=0。故
E
[
∏
i
=
1
n
X
i
,
j
i
]
=
{
(
1
N
)
n
if
j
i
are pairwise different
0
otherwise
E\left[\prod_{i = 1}^nX_{i, j_i}\right] = \begin{cases} \left(\frac 1N\right)^n \quad& \text{if }j_i\text{ are pairwise different}\\ 0\quad& \text{otherwise} \end{cases}
E[i=1∏nXi,ji]={(N1)n0if ji are pairwise differentotherwise
于是
E
[
∏
i
=
1
n
X
i
]
=
(
∏
i
=
1
n
(
K
+
1
−
i
)
)
(
1
N
)
n
E\left[\prod_{i = 1}^n X_i \right] = \left(\prod_{i = 1}^n(K + 1 - i)\right)\left(\frac1N\right)^n
E[i=1∏nXi]=(i=1∏n(K+1−i))(N1)n
这个可以
O
(
n
)
O(n)
O(n) 算,于是
O
(
n
log
2
n
)
O(n\log^2n)
O(nlog2n) 解决了,评测记录。