12.10(质数判定、分解质因数)
质数判定 // 试除法 bool is_prime(int n) { if(n<2) return false; for(int i=2;i<n;i++) if(n%i==0) return false; return true; }
质数判定 // 试除法 bool is_prime(int n) { if(n<2) return false; for(int i=2;i<n;i++) if(n%i==0) return false; return true; }
快速幂 // a^k%p int qmi(int a, int k, int p) { int res = 1; while(k) { if(k&1) res = res * a % p; a = a*a %p; k>>=1;
区间合并 原理 贪心 模板代码 // 将所有存在交集的区间合并 void merge(vector<PII> &segs) { vector<PII> res; sort(segs.begin(), segs.end()); int st = -2e9, ed =
双指针算法 使用环境 1、两个指针法分别指向两个序列 2、两个指针维护一段区间 时间复杂度 O(n) 模板代码 for(int i=0,j=0;i<n;i++) { while(j<i&&check(i,j)) j++; } 最长连续不重复子序列题目链接 799. 最长连续不重复子序列 -
连通块中点的数量题目链接 837. 连通块中点的数量 - AcWing题库
并查集 1、将两个集合合并 2、询问两个元素是否在一个集合当中 基本原理:每个集合用一棵树来表示。树根的编号就是整个集合的编号。每个节点存储它的父节点,p[x]表示x的父节点。
排列数字题目链接 842. 排列数字 - AcWing题库 排列数字题目类型 dps 排列数字代码 #include<iostream> using namespace std; const int N = 10; int n; int path[N]; bool st[N]; void df
蒙德里安的梦想题目链接 291. 蒙德里安的梦想 - AcWing题库 蒙德里安的梦想题目类型
KMP 暴力算法怎么做 S[N], p[M] for(int i=1;i<=n;i++) { bool flag=true; for(int j=1;j<=m;j++) { if(s[i+j-1]!=p[j]) { fl
大盗阿福题目链接 1049. 大盗阿福 - AcWing题库 大盗阿福题目类型