首页 > 其他 > 详细

省选模拟31

时间:2020-02-25 22:40:03      阅读:67      评论:0      收藏:0      [点我收藏+]

T1.

  直接写出来最基础的转移方程,发现假如去掉单调递增的限制就是裸的斜率优化。

  所以离散化一下,在线段树上维护凸包就可以解决单调增的限制。

  当然cdq分治也可以。

T2.

  考虑逐位确定,那么现在的问题是已经知道了前面的字母集合,求出剩余部分的方案数。

  假如已经知道了每种字母还有多少个,那么只要枚举k!种置换就可以算出方案。

  对于每种字母剩余若干个的方案数,可以通过记忆化搜索预处理出来。

  考虑给字母数量sort一下,这样状态数就合法了。

  另外一种好的做法是直接在记忆化搜索中按位确定,对于相对相同的集合记为同一种状态,用hash存。

T3.

  考虑枚举字典序相邻的两个集合的第一个不相同的位,那么这两个集合在这一位上只能差1,并且后面的方案是确定的。

  那么只要枚举这一位上填哪个数就可以确定第m位填谁,而这样的方案数之和前面有关。

  发现这个式子如果枚举位置和数的差,那么需要求的就是一列组合数的和。

  直接算就完了。

省选模拟31

原文:https://www.cnblogs.com/hzoi-cbx/p/12363912.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!