- 博客(9)
- 收藏
- 关注
原创 C++ 二分函数 lower_bound, upper_bound
对于一个递增的序列lower_bound 返回序列中 第一大于等于x 的数 的地址upper_bound 返回序列中 第一个大于x 的数 的地址用法:比如查找数组 a , 在[1 ~ n]中查找第一个大于等于x的数int *p = lower_bound(a + 1, a + n + 1, x)lower_bound中第一个参数是查找的起始位置,第二个参数是终止位置,第三个参数是要查找的数上面返回的是第一个大于等于x的位置要直接得到查找数的下标可以这么写int p = l
2022-03-27 13:29:04
1855
原创 质数(埃氏,线性)
假如有 1 ~ n 个数,让你输出有多少个质数如果用一个一个进行判断是否为质数,时间复杂度很高,可能会超时下面有两种方法可以减少耗时一. 埃氏筛选法(nlonglongn)筛去所有为质数倍数的数#include <iostream>using namespace std;const int N = 10000010;int primes[N];int cnt; // 用于计数质数的个数 bool stk[N];// 0 代表是质数,1 代表不是质数 .
2021-12-13 22:29:09
4923
原创 高精度乘法
此处讲的是高精度 乘 低精度// 每次用大的数的一位 乘以 小的数,将所得的数%10 填到数组C中,然后/10作为这一次的进位//比如 149 * 12// 先用 9 * 12 得到 108 108 % 10 = 8 填到C中 , 此时 C 为 8, 108 / 10 = 10 ;// 再用 4 * 12 得到 48 同时加上 上一位的进位 10 得到 58, 58 % 10 = 8 填到C中 此时 C为 88,进位为 5;// 最后用 1 * 12 得到 12 同时加上 上一位的进位 5 ..
2021-12-09 18:53:27
328
原创 结构体排序
当有的数据既 需要 储存 又需要 排序 的时候要用到结构体排序当一个一个数据需要多个依据多个变量来进行排序时,我们需要定义一个比较方法比如一个题目大概描述为给定n个人的生日(即出生年月日)和名字让你按照年龄从小到大输出这些人的名字(当年份相等比较月份,月份也相等比较日,日相等比较输入顺序,先输入先输出)众所周知谁出生出生日期小,年龄越大既需要对这些数据从大到小排列代码可以这样写(只有结构体,与比较函数)struct age{ int y, m, d; int id;
2021-12-08 22:20:46
115
原创 高精度加法
高精度加法就是对两个长度(位数)很大的数进行加法,无法用正常加法求解,可以采用下面的方法高精度加法的原理采用小学学的列竖式的方法求解当本位两个数之和大于等于10,要向下一位进1;下一位对应两个数加和时要加上前一位进的数由于数比较大,我们需要用字符串的形式进行读取然后在转换成整型数组代码如下#include <iostream>#include <vector>using namespace std;vector<int> A,B
2021-12-07 20:24:05
435
原创 归并排序.。
归并排序是采用分治的原理将一个数组平均分成两段分别用两个指针指向两段的第一个元素比较两个指针所指向的元素的大小将小的元素放到一个数组中,同时对应指针向右移动一位依次进行比较当其中一个指针移动到末尾时结束与快排不同的是,这个要先递归代码如下int q[N],tmp[N];void merge_sort(int q[], int l, int r){ if(l >= r) return; int mid = l + r >> 1; merge_
2021-12-06 11:59:21
167
原创 排序(快排)
//快排模板先取一个数x,将比x小的放在x的左边,比x大的放在x的右边可以定义两个指针i, j;一个刚开始指向开头,一个刚开始指向结尾,当去q[i] < x ,i指针向右移动一位,当 q[i] > x 时,i停止移动,同理 当 q[j] > x 时;j向左移动一位,当q[j] < x 时;j 停止,此时交换q[i]与q[j]的值,就满足了条件;最后分别对x左边与x右边进行递归处理。下面是代码int q[N]void quick_sort(int q[]...
2021-12-05 20:24:31
72
原创 分糖果(快速幂加前缀和)
汤姆和杰瑞在一场生日聚会中得到了n袋糖果(n为偶数),糖果袋中分别有2^1,2^2,…,2^n颗糖果,出于礼貌,他们无法将这些已分好的糖果进行拆分。现在他们想将糖果袋分成两份(每份有n/2袋糖果),为了尽量公平,希望两份糖果之间的差值为最小。例如:第一份糖果含a颗糖果,第二份含b颗糖果,请你们帮助他们使∣a−b|的值为最小。
2021-11-22 18:57:11
584
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人