[题解] CS Academy 做题记录

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

来源:CS Academy

Cube Coloring

题目大意

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

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

(1le nle 10^3)

题解

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

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


Random Nim Generator

题目大意

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

(1le nle2 imes10^4,1le kle5 imes10^4)

题解

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

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


Colored Forests

题目大意

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

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

(1le nle10^5,1le mle50)

题解

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

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

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

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


101 Palindromes

题目大意

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

(1le |S|le200)

题解

(f_{i,l,r,s}) 为长度为 (i),位于区间 ([l,r]) 间,数字和 (mod 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 imes(1+10^{i-1})}) .

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


Distinct Neighbours

题目大意

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

(1le nle750,1le a_ile n)

题解

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

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

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

更快的做法:By-Rayment

原文地址:https://www.cnblogs.com/IrisT/p/15220782.html