算法基础
文章平均质量分 53
邓汪涛
这个作者很懒,什么都没留下…
展开
-
约数
约数1. 求约数试除法求约数#include <bits/stdc++.h>using namespace std;int main(){ std::ios::sync_with_stdio(false); int n;cin>>n; int a; set<int> st; //自动去重+排序 while(n--) { st.clear(); cin>>a; for(int i=1;i <= a/i;++i)原创 2021-01-29 14:16:33 · 143 阅读 · 0 评论 -
素数
素数(质数)试除法判定素数#include<iostream>using namespace std;bool isP(int x){ if(x<=1) return false; for(int i=2;i<=x/i;++i) { if(x%i==0)return false; } return true;}int main() { int n; scanf("%d",&n); int a; for(int i=0;i<原创 2021-01-29 14:15:46 · 171 阅读 · 0 评论 -
Trie树(数组实现)
Trie树Trie字符串统计维护一个字符串集合,支持两种操作:“I x”向集合中插入一个字符串x;“Q x”询问一个字符串在集合中出现了多少次。共有N个操作,输入的字符串总长度不超过 10510^5105,字符串仅包含小写英文字母。输入格式第一行包含整数N,表示操作数。接下来N行,每行包含一个操作指令,指令为”I x”或”Q x”中的一种。输出格式对于每个询问指令”Q x”,都要输出一个整数作为结果,表示x在集合中出现的次数。每个结果占一行。数据范围1≤N≤2∗1041≤N≤2原创 2021-01-20 23:10:10 · 472 阅读 · 0 评论 -
最小生成树——Prim算法
Prim算法普里姆算法在找最小生成树时,将顶点分为两类,一类是在查找的过程中已经包含在树中的(假设为 A 类),剩下的是另一类(假设为 B 类)。对于给定的连通网,起始状态全部顶点都归为 B 类。在找最小生成树时,选定任意一个顶点作为起始点,并将之从 B 类移至 A 类;然后找出 B 类中到 A 类中的顶点之间权值最小的顶点,将之从 B 类移至 A 类,如此重复,直到 B 类中没有顶点为止。所走过的顶点和边就是该连通图的最小生成树。...原创 2021-01-19 20:18:26 · 2647 阅读 · 0 评论 -
《区间和》离散化+前缀和
区间和假定有一个无限长的数轴,数轴上每个坐标上的数都是0。现在,我们首先进行 n 次操作,每次操作将某一位置x上的数加c。接下来,进行 m 次询问,每个询问包含两个整数l和r,你需要求出在区间[l, r]之间的所有数的和。输入格式第一行包含两个整数n和m。接下来 n 行,每行包含两个整数x和c。再接下里 m 行,每行包含两个整数l和r。输出格式共m行,每行输出一个询问中所求的区间内数字和。数据范围−109≤x≤109−10^9≤x≤10^9−109≤x≤1091≤n,m≤1051≤n原创 2021-01-17 15:45:32 · 183 阅读 · 0 评论 -
二分法
二分求解数的范围给定一个按照升序排列的长度为n的整数数组,以及 q 个查询。对于每个查询,返回一个元素k的起始位置和终止位置(位置从0开始计数)。如果数组中不存在该元素,则返回“-1 -1”。输入格式第一行包含整数n和q,表示数组长度和询问个数。第二行包含n个整数(均在1~10000范围内),表示完整数组。接下来q行,每行包含一个整数k,表示一个询问元素。输出格式共q行,每行包含两个整数,表示所求元素的起始位置和终止位置。如果数组中不存在该元素,则返回“-1 -1”。数据范围原创 2021-01-16 23:13:35 · 203 阅读 · 0 评论 -
高精度(加减乘除)C++
文章目录高精加高精减高精乘高精除高精加#include <bits/stdc++.h>using namespace std;// const int maxn = 100005; char a[maxn]={0}; char b[maxn]={0}; int res[maxn] = {0};//void add(char *a,char *b){ int lena = strlen(a); int lenb = strlen(b); reverse(a,a原创 2021-01-16 22:53:21 · 266 阅读 · 5 评论 -
前缀和与差分
文章目录前缀和1. 前缀和2. 子矩阵的和差分1. 差分2. 差分矩阵前缀和1. 前缀和输入一个长度为n的整数序列。接下来再输入m个询问,每个询问输入一对l, r。对于每个询问,输出原序列中从第l个数到第r个数的和。输入格式第一行包含两个整数n和m。第二行包含n个整数,表示整数数列。接下来m行,每行包含两个整数l和r,表示一个询问的区间范围。输出格式共m行,每行输出一个询问的结果。数据范围1≤l≤r≤n1≤l≤r≤n1≤l≤r≤n1≤n,m≤1000001≤n,m≤100000原创 2021-01-16 22:41:41 · 500 阅读 · 7 评论 -
归并排序
归并排序给定你一个长度为n的整数数列。请你使用归并排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。输入格式输入共两行,第一行包含整数 n。第二行包含 n 个整数(所有整数均在1−1091-10^91−109范围内),表示整个数列。输出格式输出共一行,包含 n 个整数,表示排好序的数列。数据范围1≤n≤1000001≤n≤1000001≤n≤100000输入样例:63 1 6 2 4 5输出样例:1 2 3 4 5 6#include <bits/st原创 2021-01-15 12:02:21 · 575 阅读 · 0 评论 -
快速排序
给定你一个长度为n的整数数列。请你使用快速排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。输入格式输入共两行,第一行包含整数 n。第二行包含 n 个整数(所有整数均在1−1091-10^91−109范围内),表示整个数列。输出格式输出共一行,包含 n 个整数,表示排好序的数列。数据范围1≤n≤1000001≤n≤1000001≤n≤100000输入样例:53 1 2 4 5输出样例:1 2 3 4 5#include <bits/stdc++.h>原创 2021-01-14 22:09:16 · 135 阅读 · 0 评论