hdu7438

题面

给定长度为 \(N\) 的序列 \(a\)

一个序列有很多个子序列,每个子序列在序列中出现了若干次。

小马想请你输出序列 \(a\) 每个非空子序列出现次数的立方值的和,答案对 \(998244353\) 取模。

数据范围:\(n,a_i\le 250\)

题解

一个很高级的trick,"出现次数的立方值" 等价于 "我们选三个序列,他们恰好相同的方案数" 。

这样就可以设 \(f_{i,j,k}\) 表示现在选了三个一样的序列,第一个序列最后一位为 \(a_i\) , 第二个为 \(a_j\) ,第三个为 \(a_k\)
的方案数。

转移时只需要满足 \(a_i=a_j=a_k\) ,利用前缀和优化,可以实现 \(O(n^3)\) 的复杂度。

启发

  • 就是这个trick,之前确实是没有什么印象。
posted @ 2024-08-28 21:20  qwq_123  阅读(30)  评论(0编辑  收藏  举报