- 博客(3)
- 收藏
- 关注
原创 论建树的方法
建树是OIer们经常干的事情。但其中的方法很有讲究:又要省空间,又要便于访问。在此介绍一种本人认为比较好的方法: 1、把每个点与其所有相邻的点连接,构造出一棵无根树; 2、任选一个点作为根,然后确定点之间的层次关系。vector<int >tree[maxn + 5], v[maxn + 5]; //tree表示树中的边,v表示对应位置的边的权值 int fat[maxn + 5]
2017-07-11 23:28:27 789
原创 快速幂取模
在平常的练习中,我们经常需要求a的b次幂模p的结果。这次就专门讲讲这个。 之前,b的规模不是很大。所以我们都是这样做的: for(int i = 1; i <= b; i++) ans *= a, ans %= p; 然而,当b很大时,如10^9时,这种方法就大大滴超时了。。。 为了搞定b较大时的幂取模运算,在这里提一下快速幂取模的方法。 以27^11为例: 1、将11转化为二
2017-07-11 21:09:54 261
原创 容斥原理
容斥原理大家都比较熟悉了,它是用来求一大串给定的可能有交集的集合的并集。其公式如下: |A1∪A2∪A3∪···∪Am| = 记得第一次接触到这个公式,就卡在了实现上面。后来,在网上看到了一种方法,个人认为很好,在此给大家分享一下。 步骤如下: 1、设定一个循环变量i,令其初始值为1; 2、将i转化为二进制。 3、对于转化成的二进制数的从右往左数的第i位d[i]:
2017-07-10 22:23:38 357
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人