zrj2012-A3-0002
从 Trac 迁移的文章
这是从旧校内 Wiki 迁移的文章,可能存在一些样式问题,您可以向 memset0 反馈。
原文章内容如下:
题目大意:有N天和N个章节,一天要看且只能看一个章节,并且给出一些“某天不能看某个章节”这样的限制,问总共的方案数。
这道题就是一个容斥原理,不详细说明了,方案数=n!-(只违反一个限制的方案数)+(违反两个限制的方案数)-(违反3个限制的方案数)+……+(违反m个限制的方案数)*(-1)^m。
总之就是用DFS来枚举限制是否违反的所有状态。用两个long long的二进制来记录哪些天和哪些章节是使用了得,再记录以及违反了几个限制。对于每一种恰好违反k个限制的限制排列,其对应的方案总数是(n-k)!,因此预处理出k!% 55566677,然后枚举所有的限制情况即可。
题目大意:有N天和N个章节,一天要看且只能看一个章节,并且给出一些“某天不能看某个章节”这样的限制,问总共的方案数。
这道题就是一个容斥原理,不详细说明了,方案数=n!-(只违反一个限制的方案数)+(违反两个限制的方案数)-(违反3个限制的方案数)+……+(违反m个限制的方案数)*(-1)^m。
总之就是用DFS来枚举限制是否违反的所有状态。用两个long long的二进制来记录哪些天和哪些章节是使用了得,再记录以及违反了几个限制。对于每一种恰好违反k个限制的限制排列,其对应的方案总数是(n-k)!,因此预处理出k!% 55566677,然后枚举所有的限制情况即可。