【暑假培训1】7.14-2

数论:

1.高精除单精:

从最高位开始除,每次保留整除的结果,然后余数乘10传给下一位;

高精除高精:

重载:1.写在struct里面 2.不需动脑子的代码

最后一个for循环:处理前导0;

高精度开方:

神仙高精度开方:

两位分一组,然后每次先用目前求得的数*20;然后求一个最小的x,使得我们(目前求得的数*20+x)*x,然后使之小于且最接近于我们所落下的数位;

快速幂:

思路就是任何一个数都可以拆分几个2的乘方相乘?

表示a^b%k;

蒟阵:

矩阵加法:对应的每一格加起来;

矩阵乘法:n*m  m*r=>n*r;

新矩阵ci,j=Σ(k=1~m)Ai,k*Bk,j;

 

 蒟阵快速幂:

转置矩阵↑↓

|3 ,1,0|

|-8,0,1|

|11,0,0|

|f(n-1),f(n-2),n,3^n,1|* |7,1,0,0,0|

                                   |6,0,0,0,0|

                                   |5,0,1,0,0|

                                   |4,0,0,3,0|

                                   |0,0,1,0,1|

高斯消元:

1交换两行

2一行的倍数减去另一行;

消成上三角矩阵或上三角矩阵;

欧拉筛与积性函数:

然后欧拉筛:

e[i]表示这个数i的最小素因子;

基本思路还是埃氏筛,只不过做了改进;

对于质数来说,它的最小素因子显然就是他自己。然后我们枚举每一个数之后,枚举质数表,使当前质数都*我们当前枚举的数,这样实际上的效果是在满足条件的前提下,将某个质数的x倍都算出来筛掉(其中x>=某个质数),对于欧拉筛来说,我们要保证某个合数只被它的最小质因子筛。

对于一个合数,它的最小质因子就是最先乘到的质数,(啊有点乱,感性理解),然后当我们枚举到e[i]==prime[j]时:(e[i]>prime[i]时,就不是最小质因子筛)

 

 求欧拉函数&莫比乌斯函数

 

对于一个数i,我们令k=n/i;那么接下来会有不少数用n/某个数=k;这样我们求在哪结束n/某个数=k,可以用n/k,得到的结果就是最后一个n/某个数=k的位置;

神仙gcd:

贪心搜索:

不知道贪心搜索给出的是否为最优解;

A*:

g:从起点出发走了多少步(广搜:走了多少出,深搜:到根节点的距离)

h:当前点到终点 理想的最优情况 需要走几步;(穿墙而过可海星?)

f:f=g+h;

A*是让节点按f排个序,然后哪个点比较小,就让哪个点先扩展;

在大部分A*搜索中g*(x)=g(x);

A*第一次到终点时就是最优解;

 

h:加曼哈顿距离:1~8 横着的差的绝对值+竖着的差的绝对值

一定会比bfs快;

判断是否搜到过,拍成一个长整型×

我觉得可以学

处理数组,算每个数字右边有多少个数字比它小

 

对于每一位,从右到左分别乘0!,1!,2!,3!,……;

K短路:

g表示某个点从根节点下来走了几步

h当前节点到

判断g+h>D  return;

Ans=7; g+h>7 return;

逆元:

因为ax≡1(mod p)

所以ax-1=bp;

那么:ax-bp=1;

上方:打个表;

下方:

 

posted @ 2019-07-15 13:35  Sweetness  阅读(167)  评论(0编辑  收藏  举报