随机乱做 part 5

1. ARC117E Zero-Sum Ranges 2

题意:给定 \(n,k\),问有多少长度为 \(2n\) 的序列满足:

  • 序列中恰有 \(n\)\(1\)\(n\)\(-1\)

  • 恰存在 \(k\)\((l,r)\) 满足 \(\sum\limits_{i=l}^r a_i=0\)

题解:我们希望对前缀和数组 \(dp\),从高往低 \(dp\),设 \(dp_{i,j,k}\)\(i\) 个位置,\(j\) 个连通块,贡献为 \(k\) 的方案数。

由于每一个连通块旁边都要是新点,所以 \(\binom{p-1}{j}dp_{i,j,k}\to dp_{i+p,j-1,k+p(p-1)/2}\)

考虑还有负数的情况,而第一个和最后一个总是 \(0\),故为 \(\sum dp_{i,j,k} dp_{2n+1-i,j-1,K-k}\)

感觉整体来说是 trivial 的,那为什么不会?大概是麻了,还是太麻了!

2. ARC117F Gateau

3. ARC127F ±AB

4. ARC111F Do you like query problems?

题意:三种操作:区间 \(\max\),区间 \(\min\),区间和,求所有区间和的和的期望。

瞎扯:这肯定是要拆位考虑贡献的。容易得到一个 \(O(NMQ)\) 的解法。观察到如果要使一个数一次操作后不动,可以不操作他,可以 \(\max\) 比它小的,也可以 \(\min\) 比它大的。

\(dp_{i,j}=\sum_{k\neq j}dp_{i-1,k}p(n-p+1)+dp_{i-1,j}(\binom{n+1}{2}+ (m+1)p(n-p+1)+2m(\binom{p}{2}+\binom{n-p+1}{2}))\\=p(n-p+1)Sdp_{i-1}+dp_{i-1,j}(\binom{n+1}{2}(2m+1)-mp(n-p+1))\)

我们考察递推式 \(a_n=v_2v_1^{n-1}+v_3a_{n-1},a_0=0\),有 \(a_n=v_2v_1^{n-1}\frac{1-(\frac{v_3}{v_1})^n}{1-\frac{v_3}{v_1}}\),那我们直接算答案即可。

正解:就是如此。然而我眼瞎写错系数调了一年。

5. ARC125F Tree Degree Subset Sum

6. ARC146F Again ABC String

7. ARC142E Pairing Wizards

网络流好题,需要一些能力。

首先考察一个要求 \((x,y)\),不妨设 \(b_x\geqslant b_y\),则一定要求 \(a_x,a_y\geqslant b_y\),若不足可以补齐。

此时还未满足的要求一定满足 \(b_y\leqslant a_y,a_x<b_x\),此时可以选择用 \(x\)\(y\) 补齐到 \(b_x\)

考虑使用最小割。

建点 \((i,j)\) 表示将 \(a_i\) 增加 \(j\),连边 \(((i,j),T,1)\)\(((i,j),(i,j-1),\infty)\),此处运用了前缀和的思想,保证若使用 \((i,j)\) 则其贡献为 \(j\)

对于每个 \(a_x<b_x\)\(x\),连边 \((S,x,b_x-a_x)\),对和它有要求的每个 \(y\) 连边 \((x,(y,b_x-a_y),\infty)\),表示要么自己解决自己的,要么大家都来解决自己的。

8. ARC142F Paired Wizards

这题提醒我们更多去关注条件的性质。

如果条件性质不多,可以用分类讨论创造性质。

首先可以做一步转化,假设所有使用 \(2\) 的时间和为 \(T\)\(X\) 使用了 \(C_X\)\(2\)\(Y\) 使用了 \(C_Y\) 次,则答案为 \(T-\frac{C_X(C_X+1)}{2}-\frac{C_Y(C_Y+1)}{2}\)

开始分讨:

  • \((a_i,b_i)=(c_i,d_i)\) 直接加进答案即可。

  • \(\{(a_i,b_i),(c_i,d_i)\}=\{(1,2),(2,1)\}\)

  • \(\{(a_i,b_i),(c_i,d_i)\}=\{(1,1),(2,2)\}\)

  • \((a_i,b_i)\)\((c_i,d_i)\) 存在一位相同,就变成了单方面的决策。

显然第 \(3,4\) 种情况都是会取一个后缀。

我们可以枚举第二种的划分情况,然后预处理一些后缀情况就好。

具体的我们可以预处理 \(f_i\) 表示 \(X\) 已有 \(i\) 个然后 \(4\) 情况中如何选最优,类似对 \(Y\) 定义 \(g_i\)。然后我们枚举划分情况,枚举 \(3\) 情况的后缀,结合 \(f,g\) 可以算出答案。

9. ARC145E Adjacent XOR

10. ARC141E Sliding Edge on Torus

\((i,j)\to (i-j,j)\),这样就是每次对两排点对应连边。考察一条排的链,则这条链会形成 \(N\) 条链,相邻之间有个偏移量,树亦然。那么一条非树边就相当于是在同一排中连边,连通块数就是 \(\gcd\)

可以用并查集维护之。具体的,对于每个连通块维护 \(f_i,g_i\) 表示父亲和答案。初始 \(f_i=i,g_i=N\)

我们还给每个点维护 \(h_i\) 表示它到根的偏移量。

对于一个询问 \((a,b,c,d)\) 转化为 \((u,v,p)=(a-b,c-d,d-b)\),然后分类讨论:

  • \(u,v\) 在同一连通块中,则 \(g\to \gcd(g,h_u-h_v-p)\)
  • 否则,令 \(U\)\(u\) 的根,\(V\)\(v\) 的根,\(g\to \gcd(g_U,g_V)\)\(U\)\(V\) 连边,\(U\) 子树加 \(h_v+p-h_u\)

时间复杂度 \(O(n\alpha(n))\)

posted @ 2022-09-09 17:03  syzf2222  阅读(47)  评论(0编辑  收藏  举报