01 2017 档案
摘要:对于每个,问题等价于求有多少置换满足: 1.存在一个循环长度为 2.任意一个循环长度 枚举这种环的个数: 设表示至少有个人分成个长度为的循环的方案数,考虑枚举第一个人和哪些人分在了一起,同时有种可能的环,有$g_t=C(
阅读全文
摘要:建立新图,原图中每条边在新图中是点,新图中每个点的点权为,边权为。 若,则连一条到的单向边。 对于原图中每个点,将所有入边和出边分别排序,然后建立一排虚点表示后缀,通过双指针将边数优化至。 在新图中求
阅读全文
摘要:将袋鼠大小和口袋大小分别从小到大排序。 枚举从左往右第一只没有被放入任何口袋的袋鼠,那么之前的所有袋鼠、以及能装入的所有口袋都应该在匹配边上。 按这只袋鼠将上下两个序列分为两部分,设表示左边内部有条匹配边的方案数,表示右边内部有条匹配边的方案数。
阅读全文
摘要:建立二分图,首先如果存在度数为的点,那么显然无解。 如果存在度数为的点,那么这个点的匹配方案固定,可以通过拓扑排序去掉所有这种点。 那么现在剩下的点度数都至少为,因为左右点数相等,且左边每个点度数都是,所以右边只能是每个点的度数都是。 在这种情况下每个连通块是一个环,相
阅读全文
摘要:对于在点的某个询问,有两种情况: 情况1:走到任意一个点然后超链接跳到的某个祖先再走到。 枚举所有看看是否存在即可。 时间复杂度。 情况2:走到的某个祖先,然后走到子树内某个点,在和之间不断通过超链接来回走,
阅读全文
摘要:把集合看成左边的点,图中的点看成右边的点,若集合不包含,则连边,得到一个二分图,等价于求这个二分图的完备匹配个数。 设表示考虑了前个集合,匹配了个集合的方案数。 转移则是枚举当前集合是否匹配,然后设表示考虑了前个内部点,匹
阅读全文
摘要:建立AC自动机,因为不存在某个串是另一个串的后缀,因此匹配到任意位置都只可能匹配一个串。 预处理出每个串出现的所有位置,总的出现次数为。 设表示考虑了前个串,最后一个串匹配位置是的方案数,DP即可。 转移则是枚举,和显然可以
阅读全文
摘要:如果Jan先手,那么可以放入一个对Petra来说价值的物品,就变成了Petra先手。 对于Petra来说,拿物品的顺序是固定的,按这个顺序排序。 那么如果把Petra的选择看成,Jan的选择看成,一个合法的方案对应了一个合法括号序列。 因此贪心选取$\lfloor\frac{n
阅读全文
摘要:通过BFS可以求出到每个站点的最小花费。 每次从队首取出一个点,枚举所有它能花费1块钱就到达的线路,通过两遍递推求出最大时间。 注意到每个点和每条线路只有第一次使用时有用,所以总时间复杂度为。
阅读全文
摘要:考虑shift-and算法,那么只需要维护10个bitset即可,表示字符串的第位是否是字符。 对于修改操作,直接暴力修改10个bitset即可,时间复杂度。 对于查询在中所有出现的位置,有$ans=ans
阅读全文
摘要:如果我们将两个人拥有的牛混在一起,并按照战斗力从小到大排序,同时把第一个人选的牛看成,第二个人选的牛看成的话,那么我们会发现一个合法的方案对应了一个长度为的括号序列。 于是DP即可,表示考虑了前头牛,目前选了个左括号,括号序列的前缀和为的
阅读全文