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

浙公网安备 33010602011771号