Loading

[题解] CS Academy 做题记录

在更 qwq
17 级整理的部分题目的做题记录。

来源:CS Academy

Cube Coloring

题目大意

你有 \(n\) 种颜料和一个普通的六面骰子,第 \(i\) 种可以在骰子上最多使用 \(a_i\) 面。

问有多少种涂色方案使得骰子的相邻两面颜色不同。旋转相同算同种方案。

\(1\le n\le 10^3\)

题解

因为有相邻两面颜色不同的要求,使用一种合法方案如存在颜色相同,最多相对的两面颜色相同。

硬分类讨论,除掉旋转同构的方案就行。


Random Nim Generator

题目大意

有一个长度为 \(n\) 的数组,每个位置可以填 \(0\sim k\) 的一个数,为所有数异或和大于 \(0\) 的方案数。

\(1\le n\le2\times10^4,1\le k\le5\times10^4\)

题解

\(f_{i,j\wedge k}=\sum f_{i-1,j}\times g_k\),当 \(0\le k\le K\) 时,\(g_k=1\)。可以 FWT 加速。

\(FWT(g)\leftarrow FWT(g)^n\) 就只用一次 FWT 了。


Colored Forests

题目大意

给你两个数 \(n\)\(m\),一棵树的每个结点为 \(m\) 种颜色中的一种,如果一棵树上 \(m\) 种颜色都出现了,就称这棵树为彩色的。

\(1\sim n\) 个有标号的结点组成彩色森林的方案数。

\(1\le n\le10^5,1\le m\le50\)

题解

\(f_{i,j}\) 表示前 \(i\) 个结点染 \(j\) 种颜色的方案数:\(f_{i,j}=(f_{i-1,j}+f_{i-1,j-1}\times j)\) .

\(g_i\) 为将 \(i\) 个节点组合成彩色的树的方案数:\(g_i=f_{i,m}\times i^{i-2}\) .

\(h_i\)\(i\) 个节点组合成彩色森林的方案数:\(h_i=\sum_{j=0}^ig_j\times h_{i-j}\times C_{i-1}^{j-1}\) .

exp 的做法:[By-wrp](等原作者上传到博客 qwq)


101 Palindromes

题目大意

给一个由 \(0\sim9\) 组成的字符串 \(S\),问有到多少个子序列满足是回文串且整除 101。

\(1\le |S|\le200\)

题解

\(f_{i,l,r,s}\) 为长度为 \(i\),位于区间 \([l,r]\) 间,数字和 \(\bmod 101\)\(s\) 的方案数:

\(f_{i,l,r,s}=f_{i,l,r-1,s} +f_{i.l+1,r,s}-f_{i,l+1,r-1,s}\) .

\(a_l=a_r\) 时,\(f_{i,l,r,s}+=f_{i-2,l+1,r-1,s-a_l\times(1+10^{i-1})}\) .

然后发现 \(i\) 只在计算 \(s-a_l\times(1+10^{i-1})\) 时必不可少,而 \(10000\equiv1\bmod101\),所以可以直接压成第一维为 \(0\sim 3\).


Distinct Neighbours

题目大意

给你一个长度为 \(n\) 的序列 \(a\),问有多少种排列方式使得不存在相邻的两个数相同。

\(1\le n\le750,1\le a_i\le n\)

题解

\(m\) 为出现了多少种不同的数字,令 \(siz_i\) 表示第 \(i\) 种数字的出现次数,\(s_i=\sum_{j=1}^isiz_j\) .

\(f_{i,j}\) 为放完前 \(i\) 种数字,还有 \(j\) 个空隙左右两边是一样的数字的方案数,答案就是 \(f_{m,0}\) .

更新大概是这样的: \(f_{i,j}\times C_{siz_{i+1}-1}^{k-1}\times C_j^r\times C_{s_i+1-j}^{k-r}\rightarrow f_{i+1,j+siz_i-k-r}\) .

更快的做法:By-Rayment

posted @ 2021-09-02 21:04  Callis  阅读(45)  评论(1编辑  收藏  举报