算法板子
kristen.v
玩会吧,别真考上了.
展开
-
二维前缀和模板
void NumMatrix(vector<vector<int>>& matrix) { //matrix为原矩阵 int m = matrix.size() , n = matrix[0].size(); vector<vector<int>> preSum(m + 1, vector<int>(n + 1)); for (int i = 0; i < m; ++i) { .原创 2021-09-24 13:40:29 · 72 阅读 · 0 评论 -
__int128(快读快写)
inline __int128 read(){ int x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9'){ if(ch=='-') f=-1; ch=getchar(); } while(ch>='0'&&ch<='9'){ x=(x<<1)+(x<<3)+(ch^48); .原创 2021-08-31 16:43:12 · 535 阅读 · 0 评论 -
单词分割模板
string str; getline(cin , str);istringstream sin(str);vector<string> words; //不重复单词 set<string> words;string word;while(sin >> word) words.push_back(word); //words.insert(word);int re = words.size(); //单词个数原创 2021-08-19 14:28:21 · 65 阅读 · 0 评论 -
树状数组求 逆序数 前缀和
定义三个vector:在求逆序数时,tree只在求解过程中有用在求前缀和时,tree中储存的是 ~lowbit(i) 的总和lowbit(i) 的作用是取最右边的1输入 原数组 , 下标数组 和 tree数组的初始:void Read(){ a.push_back(0) , p.push_back(0) , tree.push_back(0); cin >> n; for(int i = 1;i <= n;i ++){ i..原创 2021-07-27 16:13:54 · 113 阅读 · 0 评论 -
二进制枚举
bitset<10000>bit;void print_set(int n , int k){ for(int i = 0;i < (1 << n);i ++){ int num = 0,kk = i; while(kk) kk = kk & (kk - 1) , num ++; if(num == k) for(int j = 0;j < n;j .原创 2021-07-25 19:03:48 · 87 阅读 · 0 评论 -
欧拉筛法(模板)
//const int maxn = 20000;vector<int>prime; //储存素数vector<bool>vis(maxn , false); //vis[i] = false 的为素数void Prime(){ vis[1] = 1 , vis[0] = 1; for(int i = 2;i <= maxn; i++){ if(!vis[i]){ prime.push_back(i); .原创 2021-07-21 12:15:23 · 120 阅读 · 0 评论 -
模板 多源最短路(floyd
单源最短路:确定的一个出发点 到另外的任何点的最短距离多源最短路:可以确定任何两点之间的最短距离floyd: 时间复杂度:O( n ^ 3 ) 空间复杂度:O( n ^ 2 ) 优缺点: 运算过程: 1,从任意一条单边路径开始。所有两点之间的距离是边的权,如果两点之间没有边相连,则权为无穷大。 2,对于每一对顶点 i 和 j,看看是否存在一个顶点 k使得从 i到 k再到 j比已知的路径更短。如果是更新它。#...原创 2021-05-25 16:42:13 · 153 阅读 · 0 评论 -
二分 模板
二分的思想就是每次都排除一半的数据二分查找的适用场合: 1.对于给定的已经有序的数列,需要在该数列中查找是否存在某个元素 2.在单调的有序的范围中,寻找符合问题 解 的一个解1.递归版 *数列中找kint left = 0 , right = vec.size() - 1;int bsearch(int left,int right,int k){ if(left <= right){ int mid = (left + right) >...原创 2021-05-24 20:56:54 · 87 阅读 · 0 评论 -
模板 单源最短路径(dijkstra
题目描述:P4779 洛谷最短路模板邻接表: idx:遍历编号 1 ~ m 边 ne [ N ]:储存当前 a的之前出现过 a 的编号( 使得 下标索引类链表,把相同出发点的编号连接在一起 //假设 结点 a 第一次作为出发点出现在编号为 1 的点,第二次出现在编号为 3 的点,则有 h [ a ] = 3,ne [ h [ a ] ] 为 1 ; h [ N ]:出发结点 a 最后的编号( 若未从结点 i 出发,则为 -1 e [ N ]...原创 2021-05-23 17:39:08 · 161 阅读 · 1 评论 -
并查集模板
题目介绍:并查集模板两个数组 s[N] ,height[N] :s[N] 用来存储哪些结点连通 *比如说 1 和 2 连通,2 和 3 连通,4 和 5连通 就会有s[1] = 1,s[2]= s[1],s[3]= s[2] ; s[4] = 4,s[5] = 4;height[N]用来表示树的高度,用来路径压缩 *比如说 1 和 2 连通,2 和 3 连通,4 和 5连通 就会有height[1] = ......原创 2021-05-19 12:05:20 · 92 阅读 · 0 评论 -
快速幂 || 取余运算
题目描述:快速幂模板先抛开取模解释一下计算原理;;遇到偶数幂时 对指数平方( b ^ 10 = ( b * b ) ^ 5 //这肯定是比一个一个乘快的,毕竟一下子解决了一半的幂遇到奇数幂时 将这个b分离出来( b ^ 5 = b * b ^ 4 ,而进行 ans * b 则是将 b 分离到另一个变量里面 //因为我们在偶数时才可以进行上面那种时间优化,所以把奇数变成偶数就又可以优化了模拟:2 ^ 10p = 10(偶数 ans = 1;4 ^ 5 ;p = 5 (奇数 a...原创 2021-05-18 20:34:12 · 214 阅读 · 1 评论 -
对拍模板 (C++
啊???为什么示例都过了,就是wa了呢,绝对是题目有问题 既然不是题目问题,又无示例可用,就该用对拍找错误数据了,虽然用处不大在翻阅很多网址和向学长要对拍模板后,终于得到了一个自己还用的顺的!!!下面是对拍的建立过程:(随便放哪吧,我就放U盘里1.用记事本建立以下几个文件(makedata,run,std,test),将makedata,std,test文件后缀名改为cpp2.将以下代码copy进run.txt中,并将后缀名改为batg++ test.cpp -o test..原创 2021-04-30 18:32:52 · 572 阅读 · 2 评论