摘要: 由Lucas定理,C(n,m)%P=C(n%p,m%p) C(n/p,m/p)可知C(n,m)为奇数的充要条件是(n&m)=m。 考虑到ai using namespace std; const int N=233335; const int mod=1000000007; int n,a[N],p 阅读全文
posted @ 2019-06-10 23:13 nosta 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 倍长数组$T$。 若从$x$出发,依次标记完所有物品的代价为$n 1+\max_{i=x}^{x+n 1}\{T_i (i x)\}$,如果某个物品$y$被跳过一次才取到,则取到$y$时的增加的代价/固有时间$n$,而减少的代价/等待时间却不会超过$n$,因为$y$在绕一周之后能够被标记到,总不会减 阅读全文
posted @ 2019-06-10 21:34 nosta 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 树上路径带修第k大问题,没有强制在线。 ~~主体~~思想:l[x]为点x的dfs序,r[x]为子树x中最后一个节点的dfs序,sum[i]为dfs序为1~i的节点的某种和,d为x,y的lca,则路径x~y的和=sum[l[x]]+sum[l[y]] sum[l[d]] sum[l[fa[d]]]。单 阅读全文
posted @ 2019-06-10 17:28 nosta 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 显然,随机产生的n个节点二叉树共有n!中结构,且出现每种结构的概率相同,因此之需求所有方案的不方便度之和即可。 让边的编号为儿子节点的编号。考虑边i(i∈[2,n])在所有情况下产生的贡献?( 很重要的方法 ) 枚举点i的子树大小t(t∈[1,n i+1]),对应的每张方案边i都有t(n t)的贡献 阅读全文
posted @ 2019-06-10 14:07 nosta 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 用并查集合并相同的点,答案为9 10^{并查集的块数 1}。 由“区间对区间的”可以联想到线段树优化之类的方法,换成倍增会更简单~ ~~~cpp include define ll long long using namespace std; const int N=1e5+10; const in 阅读全文
posted @ 2019-06-10 12:40 nosta 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 令1为树根,T=Σd[i],sum[x]是子树x中的d之和,dis[x]是节点x的带权深度。 对于节点x的儿子y,边长为w,如果y比x更优,则(T sum[y])\ w sum[y]\ w=T/2。 换句话说,若存在sum[y] T/2,显然y更优,且y只存在一个(对于x);若存在sum[y]=T/ 阅读全文
posted @ 2019-06-10 11:31 nosta 阅读(303) 评论(0) 推荐(0) 编辑