某些问题及其解决方法

发布时间 2024-01-03 17:34:21作者: shyiaw

问题 1

问题描述

树上各点均有对应的颜色,现给定节点 u,判断以 u 为根的子树中已存在的颜色所对应的节点数是否两两相同。

问题解决

  1. \(c_u\) 表示节点 u 所对应的颜色,\(sz_u\) 表示以 u 为根的子树的大小,\(cnum_i\) 表示颜色 i 在当前子树出现的次数,\(numc_i\) 表示在当前子树中出现次数为 i 的颜色有多少种。故若 \(cnum[c_u]\times numc[cnum[c_u]]=sz[u]\),则以 u 为根的子树中已存在的颜色所对应的节点数两两相同。
  2. 可用 dsu on tree 以 \(\mathcal O(n\log n)\) 的时间复杂度处理出所有节点的答

问题 2

问题描述

\(n\) 为 任意正奇数,求 \(n\) 个两两互异的 \(n\) 位数,且满足他们的组成数字的可重集合均相同。如 \(n=3\) 时,169、196、961 符合答案。

问题解决

  1. 重点在于发现完全平方数100的特殊性——任何完全平方数的 \(100\) 倍仍为完全平方数。故 \(n+2\) 的答案可由 \(n\) 的答案生成 \(n\) 个数。
  2. 剩下的两个答案形式满足 \(9\dots6\dots1\)\(1\dots6\dots9\),其中,\(\dots\) 表示 \(\frac{n-3}{2}\)\(0\)
  3. 时间复杂度位 \(\mathcal O(n^2)\)