P4463 [国家集训队] calc

我们令f(i)为长度为i的答案

然后我们用序列中相同元素的个数来容斥:

f(i)=s(1)f(n-1)-C(n-1,1)*s(2)*f(n-2)+C(n-1,2)*s(3)*f(n-3)-.........

其中s(m)表示sigma(1,A):im

为什么可以这样写:

C(n-m,2)s(m)其实可以表示随意选m个位置,然后随意选择数对答案的贡献。

我们先算序列中全部互相不同的个数,如果我们用s(1)f(n-1)计算,则多算了序列中有i+1个相同的方案。

容斥掉就是这个式子了。

因为N<=500,所以预处理s(i),C之后暴力计算就好了

posted @ 2019-07-09 22:12  永无岛  阅读(155)  评论(0编辑  收藏  举报