退位计划

全部颜色都选的限制很强,考虑对他容斥。

首先我们可以很容易求出 \(n\) 个点最多用 \(k\) 个点的答案为 \(k(k-1)^{n-1}\)

那么我们此时多算了某个颜色没选的答案,需要减掉他,于是答案就显然了。

\(\sum\limits^{k}_{i=1} -1^{k-i}\times {k \choose i}\times i(i-1)^{n-1}\)

单调栈

考虑一下对于一个 \(b_i\neq-1\) 他会对值有什么限制。

不难发现 \(j \in (b_i+1,i)\)\(a_j\le a_i\)\(a_i<a_{b_i}\)。第一个条件不好搞。

转化一下第一个条件发现第三个条件是对于每个 \(b_i=-1\) 要找到最小的 \(j\) 满足 \(j>i\)\(b_j<i\) 需要有 \(a_i\le a_j\)。又由于 \(b_i\neq-1\) 也有这个限制条件,所以当自己不是最小的指向 \(b_i\) 的点,第二个条件改为 \(a_i<a_{las_{b_i}}\),其中 \(las_{b_i}\) 为上一个 \(b_j=b_i\) 的位置 \(j\)

现在我们得到了每个点与其他点的大小关系,发现形成森林。那自然设 \(f_{i,j}\) 表示点 \(i\) 选数 \(j\),直接 DP 就可以了。

树之间不影响所以最后扫一遍每个树的根统计一下答案即可。

Two Permutations

显然我们只关心 \(P\) 的每一位匹配的位置,剩下的就是 \(Q\) 的匹配。而每一位的 \(P\) 是确定的,也就是说每一位在 \(S\) 中只有两个匹配位置。

这个限制非常强,我们可以对其 DP。

\(f_{i,0/1}\) 表示 \(P\) 的第 \(i\) 位匹配 \(S\) 中第 \(1/2\) 次出现的 \(P_i\),转移讨论一下就可以了。

传送

还没写

B

非常喜闻乐见的想到差分,那么区间取反就是头尾的 01 取反,区间翻转就是区间头和区间尾建边。

我们把所有操作建边,最短路就知道把任意两个 1 变成 0 的答案,这个可以预处理好。

枚举哪两个一起变,直接计算最小值。

取模

显然对 \(2\) 取模就有答案为 \(2\),只需要看答案是否可以为 \(1\) 即可。

从序列中随便找三个数,必然有两个模数相同,枚举差的因数就可以找到这个模数。剩下的一个数减余数取个 gcd 看下是否有就可以了。时间复杂度是 \(O(n\log V)\),取极差小的 \(V\) 可以卡过去。

quq

首先有贪心,把 \(a\) 从大到小排序,那么在取完 \(a_i-a_{i-1}\) 之前不会用 \(i-1\) 号扭蛋机。

那么对于一个数 \(i\),所有大于 \(i\) 的已经扭到了,但是 \(i\) 没有扭到,这个概率为 \(\frac{1}{n-i+1}\),考虑选到 \(<i\) 对两者都无影响,也就对概率无影响,否则就会在这其中选一个。每次都不选到 \(i\) 且后面全部选完的概率就是 \(\frac{1}{n-i+1}\)

在这个概率下,我需要选出这个。扭包含这个值的最小的扭蛋机,出他的期望次数就是值域。这个感性理解即可。

最后的答案把这些乘起来相加即可。

求排列(roast)

拆位。

找到最高的一位,这一位既有 \(0\) 也有 \(1\),那么必然有不同数的跨度。也就是说答案的这位必然是 \(1\)

那么把数按照这一位分成两个集合,集合内乱走是不会影响答案的,只有跨集合会影响答案。

则一个集合建字典序,一个集合查异或最小值,集合之间的边左右两边异或必然是这个最小值,否则走这个边就是不优的。

接下来就变成走路题了,需要保证任意时刻不走到割点。一个点是割点只能是所有去对面的边都挂在这个节点上了。

所以按照字典序贪心,先找合法起点,他要么不是割点,要么就是集合内唯一的点。向前走一步,如果集合还有点,就不能走割点,其他就在出边中找最小值。

走完一圈就得到答案了。

仙人

无脑圆方树。

变成树后对于每个子树进行DP。

对于 \(u\),我们考虑一个子树 \(v\) 合并进来的贡献。拓扑序减去自己在最前面长 \(siz_u-1\),合并长为 \(siz_v\) 的拓扑序,由于子树之间是互不影响的,所以可以任意取位置,取完后要把这些位置删掉,则有 DP:

\[f_u=\prod f_v\times \binom{siz_v}{siz_u-1-\sum siz_{v'}} \]

不过注意方点是没有 \(siz\) 贡献的,而且最远点是要强制在最后的,所以刚才的 DP 不能用。

重设个 \(n^2\) 的 DP \(g_{l,r}\) 表示第 \(l\)\(r\) 儿子排拓扑序的答案,则有

\[g_{l,r}=f_{son_l}\times g_{l+1,r}\times {siz_{l,r}-1 \choose siz_{l+1,r}}+f_{son_r}\times g_{l,r-1}\times {siz_{l,r}-1 \choose siz_{l,r-1}} \]

均摊时间复杂度 \(O(n^2)\)

[5102IOSJ]最大公约数

福利题。

因为 \(n=1000\),所以 \(n^2=10^6\),但是 \(n^4=10^12\),所以考虑 \(n^4\) 来做这个题。

枚举矩阵左下 \((i,j)\) 和右上角 \((f,k)\),不难发现 \(gcd(i,j,f,k)=\operatorname{gcd}(gcd(i,j,f,k-1),\operatorname{gcd}(gcd(i,j,f-1,k),a(f,k)))\)。现在我们获得了一个 \(n^4\) 的做法。考虑优化它。

先优化空间,我们发现可以去掉前两维,这样可以跑 \(1000\) 的数据。

然后我们发现,若 \(gcd(f,k)=1\),那么对于任意 \(f'>f,k'>k\),有 \(gcd(f',k')=1\)。可以剪枝优化。

分析时间复杂度。当数据是随机的,一但我们找到任意一个数与当前集合内任意数互质,那么我们就会退出。发现这样集合大小期望不会很大,大概 \(100\) 左右,所以时间复杂度期望 \(O(100n^2)\)

posted on 2023-09-04 20:18  lizhous  阅读(13)  评论(0编辑  收藏  举报