摘要:
约数和定理 对于一个大于$1$正整数$n$可以分解质因数 \(n=p_1^{a_1}*p_2^{a_2}*p_3^{a_3}*\cdots*p_k^{a_k}\) 则由约数个数定理可知$n$的正约数有 \((a_1+1)*(a_2+1)*(a_3+1)*\cdots*(a_k+1)\) 那么$n$的 阅读全文
摘要:
题目 这场前三题都是毒瘤字符串 A题 Déjà Vu 题意: 给定一个字符串,在某处插入一个字符a将其转换成非回文串。若无法转换成非回文串则输出NO,否则输出YES和转换后的字符串。 贪心题,若字符串不全为a则一定有解,只需从前往后遍历整个字符串,若对称的位置不为a就将a插入该位置即可。 1 #in 阅读全文
摘要:
DFS双向搜索的经典例题。 对于DFS和BFS来说双向搜索都能有效降低时间复杂度,但缺点就是会多开销空间,也就是用空间换时间。 由于我们的搜索范围是逐步扩大的所以当我们的每个节点的子节点较多时就可以做到如下: 红色部分是从反向开始搜索,这样我们就可以明显看出我们有效的降低了时间的复杂度。 题目: 思 阅读全文
摘要:
NOI原题: dfs剪枝的经典例题(据yxc老师说他那时北大考了不少次)。 重要一点:题目为了方便计算选择了不考虑π。 剪枝(方便说明,最上面是第一层,当前是第u层,最下面是第m层) ①:优化搜索顺序 由于我们是寻找分支最少的路线进行搜索,所以我们每次应当从下往上搜,并且从当前能取得的最大值搜索,这 阅读全文
摘要:
在某些情况下使用 scanf 也会TLE,这是我们就需要用到快读来优化输入。 原理:getchar 速度要快于 scanf ,scanf 速度要快于 cin 使用 getchar 来读入字符,并且来处理非数字输入,由于输入可能为负数,所以我们需要对符号位进行特判一下。 1 inline int re 阅读全文
摘要:
上古NOI原题,刚学搜索时完全没头绪,过了几个月之后倒是很顺利的做出来了。 题目: 思路: 首先我们需要通过需处理出每个字符串对应每个字符串能接的后缀长度(可以有效地降低时间复杂度),此时就需要使用到字符串截取函数 substr (底部附有用法) ,由于我们需要找到最长的“龙”长度,所以我们在预处理 阅读全文
摘要:
顾名思义就是在用线性筛求质数的过程中将每个数的欧拉函数求出,时间复杂度为O(n); 欧拉函数: 题目: 思路: 求质数的过程中遇到了三种情况,分别是 if (!st[i]) prime[cnt ++] = i; if (i % prime[j] == 0) break; st[prime[j] * 阅读全文
摘要:
定义(来自WiKi): 在数论中,对正整数n,欧拉函数是小于或等于n的正整数中与n互质的数的数目。此函数以其首名研究者欧拉命名,它又称为φ函数(由高斯所命名)或是欧拉总计函数(totient function,由西尔维斯特所命名)。 例题: AcWing: 873.约数之和 代码: 1 #inclu 阅读全文
摘要:
矩阵快速幂 ———— 主要用于求解于斐波那契数列有关的题目。 洛谷1962 请你求出Fn % 1e9 +7 的值。 【数据范围】 1 <= n <= 263 代码: #include<iostream> #include<algorithm> #include<cstdio> #include<cs 阅读全文
摘要:
使用的优化: 优化搜索顺序: 每次选择分支最少的格子进行搜索 可行性优化: 每行每列每个九宫格不能有重复数字 二进制优化: 每行每列每个九宫格使用二进制数来表示每个数是否能够被使用,如果是1那么就能被使用,0就不能被使用,这样可以通过对行列九宫格进行与运算和lowbit运算可以快速的求出能使用哪些数 阅读全文