省选模拟39

A. gift

  讲过的原题,然而考场感觉T2T3更可做所以没有给多长时间。

  假如当前序列已经确定,那么将每个位置对应的两个数连一条边,最终的最少操作次数就是$n-$环的个数。

  所以我们现在只需要求出来形成$k$个环的方案数。

  假如不考虑0,那么原图会形成若干个环和链,环不用考虑,只需要考虑链经过变换形成环的方案数。

  首先将链分类,分为$0->x$或$x->0$或$0->0$,先考虑前两种。

  由于前两种之间的合并需要用到第三种,所以先考虑内部的贡献。

  设$f_i$表示$n$条链恰好形成$i$个环的方案数,那么这个东西可以枚举其中的多少条链构成了这些环,这样做的方案数是确定的,也就是斯特林数。

  然后将前两种情况的数组卷积一下就可以得到前两种情况的总贡献。

  然后对于第三种情况,他内部形成环的方案数就是带标号的斯特林数,乘上阶乘就行了。

  然后考虑前两种和第三种组合的贡献,实际上就是再进行一次卷积。

B. girls

  发现总的贡献可以通过简单容斥得到。

  然后就变成了简单的统计至少不满足零对限制,一对限制,两对限制,三对限制的方案数,前面几个都可以线性简单搞。

  可以发现,最后一个就是三元环计数,给边定向之后直接做行了。

C. string

  大约是一道套路的模板题。

  考场上打了lct,当时打完就剩半个小时了,T1还没打,一想LCT估计不会很好调,不一定调的出来然后直接暴跳祖先链更新就ac了。

  对于每个串分别维护一下endpos集合大小,然后由于强制在线就是套路的LCT,没什么特殊的操作直接链上加就可以了。

posted @ 2020-03-06 21:53  tdcp  阅读(85)  评论(0编辑  收藏  举报