摘要:
参考自一篇全英文的issueThe Period of the Fibonacci Sequence Modulo j \(\text{Definition}\) $\text{Fibonacci}$数列 \(\forall n\in\mathbb{N_+},F_{n+1}=F_n+F_{n-1}\ 阅读全文
摘要:
Link 用并查集把每一行在同一个连通块内的点并起来,并向下一行的与当前连通块有交的连通块连边。 这样会构成一棵森林的结构,然后直接dp即可。 #include <cstdio> using i64=long long; const int N=1007,P=1000000007; int id[N 阅读全文
摘要:
Link 首先有一个比较显然的$O(nm)$的dp。 同时我们可以发现,对于一个洞,它只能影响到离他Manhattan距离不大于$2$的位置。 剩下的点就只能够从它左下方的点转移过来。 按对角线顺序dp,用map维护被洞影响到的点特殊转移即可。 #include<cctype> #include<c 阅读全文
摘要:
Link 注意到如果一种课桌的合适区间被其它的某种课桌的合适区间完全包含,那么我们就可以把这种课桌去掉。 把剩下来的课桌按左端点升序排序,那么这些课桌的右端点也是递增的。 然后把每个班里的学生按身高升序排序,那么显然相邻的两个同学会坐同一个课桌,这样我们可以把一个班的所有学生分成$n$组。 然后我们 阅读全文
摘要:
Link 先考虑树的情况,设$f_{u,0/1}$表示$u$的父亲占用的$u$的出度为$0/1$的情况下给$u$的子树内的边定向的方案数。 转移很简单,这里就不赘述了。 现在考虑仙人掌的情况,考虑在圆方树上dp。 状态需要改为$f_{u,0/1/2}$,圆点可以用类似于树上的形式dp,方点可以枚举环 阅读全文
摘要:
Link 假如我们现在确定了一个答案,然后要检测它是否可行。 我们求出所有飞船能够到达的圆弧,总共有$2n$个端点。 如果存在一组合法解,那么一定存在一组正多边形有至少一个顶点在端点上的解,那么我们暴力建边然后求二分图最大匹配即可。 利用爬山+二分优化即可通过。 正解大概是说首先圆弧对应的偏转角度可 阅读全文
摘要:
Link 二进制分组。每次选定一个二进制位,把特殊点按编号在这一位上的状态分为两半,跑两遍dij求出这两半之间的最短路。 #include<queue> #include<cstdio> #include<vector> #include<cstring> #include<algorithm> # 阅读全文
摘要:
Link KM #include<cstdio> #include<cstring> #include<algorithm> using i64=long long; const int N=2007,inf=0x3f3f3f3f; int n,a[N],w[N][N],vis[N],A[N],B[ 阅读全文
摘要:
Link 然后枚举缩点之后的DAG的情况,考虑计算可行的边集方案数,再递归乘上所有scc的导出子图的答案。 计算可行的边集方案数可以考虑dp,设$f_s$表示点集$s$的导出子图中使得子图形成一个DAG的边集方案数,那么可以得到转移 \(f_s=\sum\limits_{t\subseteq s\w 阅读全文
摘要:
Link 一条Hamilton回路可以被拆分成由若干条树上路径组成的环,其中相邻两条树上路径不能同属于一棵树。 假如我们求出了将一棵树分为若干链的方案数,那么剩下的就是求给环染色,相邻位置颜色不同的方案数。 第一部分可以用树形背包简单求出,设$f_{u,i,0/1/2}$表示$u$的子树内选了$i$ 阅读全文
摘要:
Link 先套一个最值反演,显然大小相同的集合的答案是一样的,所以要求的是$f_i$表示$i$只鸽子第一次有某只鸽子被喂满的期望次数。最后答案为$\sum\limits_n(-1){i+1}{n\choose i}\frac nif_i$。 现在钦定$i$只鸽子,我们称丢给这几只鸽子的玉米为有效玉米 阅读全文