这周的话就是继续往下看了博客,关于{1,2,...,n}的子集和的一个有趣结论,其实最后的一部分我也没有看懂,所以之后还需要阅读这一部分。
也学习到了区间GCD的解决方法,也是一个模板解决方案,之前我确实只会用暴力解决该问题,还了解到了用线段树解决区间GCD的问题,所以也复习了一些基础的线段树操作,可惜的就是那个题目的链接我没法打开,呜呜呜。
扩展欧几里得,以及线性同余方程,中国剩余定理的一些例题还是在第一篇的基础数论的延伸当中看到的,比较有意思的就是中国剩余定理的非互质的时候,下面的poj的例题也做了一些,因为洛谷上的一些我可能水平真的不够,实在是没有什么思路,等我多看一些例题的时候再做可能会更好一些,因为直接做也是就对着答案看,觉得进步的水平也不大。
到看到第二个数论基础的时候,相当于是复习了,感觉基础的函数推导以及基础的模板看着还是自己写的时候都是不费力的,当然进阶的知识还是很一般,但是也有之前没有看到过的一些新的知识点,费马定理以及莫比乌斯函数(莫比乌斯函数O(n)求解1~n以内的所有μ ( n ) ,还有就是逆元,阶乘的逆元,感觉自己在这方面还是有一些点不是很懂。
莫比乌斯例题模板:
const int maxn = 210000;
bool v[maxn];
int mm[maxn], p[maxn];
void sieze(int n)
{
int m = 0; memset(v, false, sizeof(v));
mm[1] = 1;
for(int i = 2; i <= n; i ++){
if(!v[i]){
p[++ m] = i;
mm[i] = -1;
}
for(int j = 1; j <= m && i * p[j] <= n; j ++){
v[i * p[j]] = true;//标记
if(i % p[j]) {
mm[i * p[j]] = -mm[i];
}
else {
mm[i * p[j]] = 0;
break;
}
}
}
}
反演以及与其他算法结合的例题也看了几道,其实没怎么懂,准备再从推导开始入手理解,慢慢来嘛,毕竟这个我也不能着急。
这周的例题大部分也是博客当中的,因为洛谷我看了几道实在是不在我的解决水平以内,很简单的一些筛法以及基础的模板题目之前也做过一些,对我的帮助感觉并不是很大,也练习了一些ACWing上的题目,下周的话就继续阅读博客,然后先把这些例题给搞明白才行。