
蓝桥杯、天梯赛基础通用模板
一些算法比赛中可以直接记忆和使用的基础模板
岛屿绕城
向着未知怀有敬畏之心。
展开
-
C++ 前缀和简易模板(一维、二维)
//一维前缀和#include<iostream>using namespace std;int a[100005];int sum[100005];int main(){ int n,m; cin>>n>>m; for(int i=1;i<=n;i++) { cin>>a[i]; sum[i]=sum[i-1]+a[i]; } int l,r; for(原创 2021-04-13 16:52:56 · 653 阅读 · 0 评论 -
C++ 常用算法模板集合(蓝桥杯、天梯赛等)
C++ Dijkstra简易模板C++ Kruskal简单模板C++五种排序简易模板C++ 区间合并模板C++ 二分查找模板(普通、左边界、右边界)C++ 最长上升子序列模板C++ Trie(字典树)模板原创 2021-04-13 16:46:21 · 2277 阅读 · 0 评论 -
C++ 试除法判断质数
#include<iostream>using namespace std;bool is_prime(int x){ if(x<2) return false; for(int i=2;i<=x/i;i++) { if(x%i==0) return false; } return true;}int main(){ int t; cin>>t; for(int i=0;i<原创 2021-04-13 16:38:46 · 463 阅读 · 0 评论 -
C++ Trie(字典树)模板
int son[N][26], cnt[N], idx;// 0号点既是根节点,又是空节点// son[][]存储树中每个节点的子节点// cnt[]存储以每个节点结尾的单词数量// 插入一个字符串void insert(char *str){ int p = 0; for (int i = 0; str[i]; i ++ ) { int u = str[i] - 'a'; if (!son[p][u]) son[p][u] = ++ i原创 2021-01-30 11:55:26 · 738 阅读 · 0 评论 -
C++ 最长上升子序列模板
//从左到右 for(int i=0;i<n;i++) { f1[i]=1; for(int j=0;j<i;j++) { if(a[i]>a[j]) f1[i]=max(f1[i],f1[j]+1); } res=max(res,f1[i]); } //从右到左 for(int i=n-1;i>=0;i--) {原创 2021-01-29 16:26:00 · 458 阅读 · 0 评论 -
C++ Spfa判断负环简易模板
#include<bits/stdc++.h>using namespace std;const int N=10010*2;int e[N],ne[N],w[N],h[N],idx,cnt[N],dis[N],st[N];int n,m;queue<int> q;void add(int a,int b,int c){ e[idx]=b,w[idx]=c,ne[idx]=h[a],h[a]=idx++;}bool spfa(){ memset(d原创 2020-11-12 22:29:56 · 234 阅读 · 0 评论 -
C++ 二分查找模板(普通、左边界、右边界)
//最基本的二分查找算法int binary_search(int[] nums, int target) { int left = 0, right = nums.length - 1; while(left <= right) { int mid = left + (right - left) / 2; if (nums[mid] < target) { left = mid + 1; } else原创 2020-10-31 15:46:55 · 1286 阅读 · 0 评论 -
C++ 区间合并模板
相关题目:区间合并#include<bits/stdc++.h>using namespace std;vector<pair<int,int> > temp,ans;int main(){ int n,i=0; cin>>n; while(n--) { int x,y; cin>>x>>y; temp.push_back({x,y});原创 2020-10-28 20:57:21 · 545 阅读 · 0 评论 -
C++五种排序简易模板(冒泡排序、选择排序、插入排序、希尔排序、快速排序)
1.冒泡排序void BubbleSort(int a[],int n){ for(int i=0;i<n;i++) { for(int j=0;j<n-1-i;j++) { if(a[j]>a[j+1]) swap(a[j],a[j+1]); } }} 2.选择排序void SelectSort(int a[],int n){ fo...原创 2020-03-16 21:39:07 · 724 阅读 · 0 评论 -
C++ Kruskal简单模板
#include<iostream>#include<algorithm>#include<cstdio>using namespace std;int f[200005];int n;int m;int ans=0;int cnt=0;struct edge{ int u; int v; int w;}Edge[200005];int read(){ int x=0,f=1; char c=getchar(); while(c<原创 2020-07-06 17:04:58 · 453 阅读 · 0 评论 -
C++ Dijkstra简易模板
#include<iostream>#include<algorithm>#include<queue>#include<memory.h>using namespace std;struct edge{ int to; int next; int w;}edge[500010];int cnt=0;int head[100010];int d[100010];int vis[100010];int n,m,u,v,w,s;pri原创 2020-07-12 10:26:27 · 1264 阅读 · 1 评论 -
C++ 树状数组简易模板
#include <iostream>#include <cstdio>using namespace std;const int N = 100010;int a[N], tr[N];int n, m;//lowbit 函数int lowbit(int x){ return x & -x;}//在第x的数上加上vvoid add(int x, int v){ for(int i = x; i <= n; i += lowb原创 2020-10-26 22:46:14 · 228 阅读 · 0 评论