Mahjong
找到可以通过以下两种操作,使得长度为 \(N\)、元素之和为 \(M\) 的数列 \(A\) 全为 \(0\) 的 \(A\) 的个数,再取模 \(998244353\)。
- 在 \(A\) 中选一个元素,将其减去 \(K\)。
- 在 \(A\) 中选取长度为 \(K\) 的子串,子串中每个元素减去 \(1\)。
tag:组合数学
搞笑题,我忘了插板法,我更搞笑。
首先判无解。由于两种操作均可看作从总和中减去 \(k\),所以若 \(M\bmod K\ne 0\) 就无解。
发现直接从 \(A\) 中删除比较麻烦,所以我们选择从 \(B=\{0,0,\dots,0\}\) 开始加,加出来的序列就是我们的 \(A\)。
考虑如何不重不漏统计出 \(A\)。发现唯一重复的情况是执行了 \(\ge k\) 次 \(i\) 相同的二操作,这能被 \(k\) 次一操作替代。于是实际上我们要构造一组操作序列 \(b\),\([b_1,b_2,\dots,b_{n-k+1}]\) 中 \(b_i\) 代表下标为 \(i\) 的二操作执行了多少次,\([b_{n-k},b_{n-k+1},\dots,b_{2n-k+1}]\) 中 \(b_{n+i}\) 表示下标为 \(i\) 的一操作执行了多少次。那么我们有如下限制:
- \(\sum_{1\le i\le 2n-k+1}b_i = \frac{m}{k}\)。
- 对于所有 \(i\in [1, n-k+1]\),\(b_i<k\)。
这相当于前 \(n-k+1\) 个板有上界限制的插板法。发现上界限制难做,但下界限制好做,无非是先从所有元素里划出一部分做下界然后转无限制插板法。所以我们容斥,钦定 \(i\) 个 \(b_i\) 不合法,枚举 \(n-k+1\) 中哪 \(i\) 个不合法,然后有:
\[\sum_{i=0}^{n-k+1}(-1)^i\tbinom{n-k+1}{i}\tbinom{\frac{m}{k}-ik+2n-k}{2n-k} \]由于 \(\frac{m}{k}\) 很大,但是 \(2n-k\) 很小,于是我们暴力处理组合数即可。
Make Biconnected
给你一棵由无向边组成的二叉树,树上每个点有权值 \(w_i\)。你可以把两个点之间连无向边,如果将 \(u\) 与 \(v\) 连边,代价是 \(w_u+w_v\)。请给出一种连边方式,使得连边后,图中去掉任何一个点仍然联通,即图是一个点双连通图。在此基础上,你要使代价最小。
tag:构造
发现对于度数为 \(1\) 的每个点,必定有条路径以它为一个端点。否则它会产生割点。
因此,我们将所有度数为 \(1\) 的点配对,然后两两匹配即可。每个点匹配与他距离最长的那个点。
需要注意的是这样可能会多出一个点,我们把这个点向上跳,直到跳到第一个三度点。三度点到这个叶子节点的路径必须被覆盖,于是我们在树的剩余部分找到最小值连起来即可。
All Pair Shortest Paths
给你一个 \(2\times N\) 的表格,定义 \(f(x,y)\) 为 \(x\) 走到 \(y\) 经过格子权值和的最小值,求所有 \(f(x,y)\) 之和。
tag:分治
之后的讨论中,不妨设 \(x\) 的横坐标小于 \(y\)。
由于表格只有两行,因此我们的路径必定横坐标递增。因为如果走了回头路,就要再把之前走过的路再走一遍,而且没有收益。
这样的话,我们就把对 \(f(l,r)\) 的讨论限制在了 \([l,r]\) 这个区间里。于是可以考虑分治。对于分治中心 \(mid\),考虑左端点在 \([L,mid]\) 之间,右端点在 \([mid+1,R]\) 之间产生的贡献。对于左边,我们倒着做,考虑 \((mid,0)\) 和 \((mid,1)\) 到左边每个点的最短路径。对于右边,我们正着做,同样是从中央两个点开始考虑。
最后一个问题,我们如何合并左右两边的答案。答案有两种情况: \(A_{l,1}+B_{r,1}\) 和 \(A_{l,0}+B_{r,0}\),表示走到 \(mid\) 上方的点汇合还是走到下方的点汇合。我们把右边的点按照 \(B_{i,0}-B_{i,1}\) 从小到大排序,显然如果 \(A_{l,0}-A_{l,1}+B_{r,0}-b_{r,1}>0\) 则走 \(A_{l,1}+B_{r,1}\) 更优。于是做一个二分后前缀和统计贡献即可。时间复杂度 \(O(n\log^2 n)\)。
标签:dots,星人,OI,插板,mid,操作,2n,8.28,我们 From: https://www.cnblogs.com/closureshop/p/17663504.html