- 博客(15)
- 收藏
- 关注
原创 C++题解 KMP字符串
C++题解 KMP字符串题目描述给定一个模式串 SSS,以及一个模板串 PPP,所有字符串中只包含大小写英文字母以及阿拉伯数字。模板串 PPP 在模式串 SSS 中多次作为子串出现。求出模板串 PPP 在模式串 SSS 中所有出现的位置的起始下标。输入格式第一行输入整数 NNN,表示字符串 PPP 的长度。第二行输入字符串 PPP。第三行输入整数 MMM,表示字符串 SSS 的长度。第四行输入字符串 SSS。输出格式共一行,输出所有出现位置的起始下标(下标从 0 开始计数),整数之间用
2021-11-13 02:06:35
960
原创 C++题解 最长连续不重复子序列
C++题解 最长连续不重复子序列题目描述给定一个长度为 n 的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。输入格式第一行包含整数 n。第二行包含 n 个整数(均在 0∼105 范围内),表示整数序列。输出格式共一行,包含一个整数,表示最长的不包含重复的数的连续区间的长度。数据范围1≤n≤1051≤n≤1051≤n≤105输入样例:51 2 2 3 5输出样例:3思想暴力算法暴力算法显然是最容易考虑的,我们使用两个循环 i , j 对整个数列进行遍历,很
2021-10-31 17:37:44
926
原创 C++题解 二进制中1的个数
C++题解 二进制中1的个数题目描述给定一个长度为 n 的数列,请你求出数列中每个数的二进制表示中 1 的个数。输入格式第一行包含整数 n。第二行包含 n 个整数,表示整个数列。输出格式共一行,包含 n 个整数,其中的第 i 个数表示数列中的第 i 个数的二进制表示中 1 的个数。数据范围1≤n≤100000,0≤数列中元素的值≤1091≤n≤100000,\\0≤数列中元素的值≤1091≤n≤100000,0≤数列中元素的值≤109输入样例:51 2 3 4 5输出样例:1
2021-10-31 17:18:12
692
原创 C++题解 差分矩阵
C++题解 差分矩阵题目描述输入一个 nn 行 mm 列的整数矩阵,再输入 qq 个操作,每个操作包含五个整数 x1,y1,x2,y2,cx_1,y_1,x_2,y_2,cx1,y1,x2,y2,c ,其中 (x1,y1)和(x2,y2)(x_1,y_1) 和 (x_2,y_2)(x1,y1)和(x2,y2) 表示一个子矩阵的左上角坐标和右下角坐标。每个操作都要将选中的子矩阵中的每个元素的值加上 ccc。请你将进行完所有操作后的矩阵输出。输入格式第一行包含整数 n,m,qn,m
2021-10-30 21:13:55
426
原创 C++题解 高精度除法
C++题解 高精度除法题目描述输入格式共两行,第一行包含整数 AA,第二行包含整数 BB。输出格式共两行,第一行输出所求的商,第二行输出所求余数。数据范围1≤A的长度≤100000,1≤B≤10000,B一定不为01≤A的长度≤100000,\\1≤B≤10000,\\B 一定不为 01≤A的长度≤100000,1≤B≤10000,B一定不为0输入样例:72输出样例:31思路对于该题目的实现,我们使用一个数组进行除法的模拟,为了方便此处使用vector。数据的输入
2021-10-30 19:20:15
946
原创 C++题解 高精度乘法
C++题解 高精度乘法题目描述给定两个非负整数(不含前导 00) AA 和 BB,请你计算 A×BA×B 的值。输入格式共两行,第一行包含整数 AA,第二行包含整数 BB。输出格式共一行,包含 A×BA×B 的值。数据范围1≤A的长度≤1000001≤A的长度≤100000,0≤B≤100000≤B≤10000输入样例:23输出样例:6思路对于该题目的实现,我们使用两个数组进行乘法的模拟,为了方便此处使用vector。数据的输入可以看到数字的长度远远超过了long l
2021-10-30 17:44:57
307
原创 C简单问题 找鞍点
找鞍点思想鞍点的定义鞍点即为:在该行 最大 ,且在该列 最小 的一个元素。求解的分步进行一、得到最大点我们不妨定义一个数组 max[n] 用来保存每一行的 最大值,同时定义一个数组 pos[n] 对该 最大值 的所在列进行存储。二、得到最小点我们不妨定义一个数组 min[n] 用来保存每一列的 最小值。三、进行匹配我们用一个for循环对max数组进行遍历,遍历的同时,我们也能通过pos取出max数组里当前元素所在列的最小值min,那么事情就变得简单了:当 max[i] == min[ p
2021-10-30 17:30:00
254
原创 C++题解 高精度减法
C++题解 高精度减法题目描述给定两个正整数(不含前导 00),计算它们的差,计算结果可能为负数。输入格式共两行,每行包含一个整数。输出格式共一行,包含所求的差。数据范围1≤整数长度≤1051≤整数长度≤10^51≤整数长度≤105输入样例:3211输出样例:21思路对于该题目的实现,我们使用两个数组进行加法的模拟,为了方便此处使用vector。数据的输入可以看到数字的长度远远超过了long long的需要,我们需要使用字符串进行数据的读入。注意,为了运算方便,应
2021-10-30 16:19:42
583
原创 C++题解 高精度加法
C++题解 高精度加法题目分析给定两个正整数(不含前导 0),计算它们的和。输入格式共两行,每行包含一个整数。输出格式共一行,包含所求的和。数据范围1≤整数长度≤100000输入样例:1223输出样例:35思路对于该题目的实现,我们使用两个数组进行加法的模拟,为了方便此处使用vector。数据的输入可以看到数字的长度远远超过了long long的需要,我们需要使用字符串进行数据的读入。注意,为了运算方便,应该从字符串的末尾将原数字倒序的进行读入,想一想为什么。模
2021-10-30 15:13:21
283
原创 C++题解 归并排序
题目描述给定你一个长度为 n 的整数数列。请你使用归并排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。输入格式输入共两行,第一行包含整数 n。第二行包含 n 个整数(所有整数均在 1∼109 范围内),表示整个数列。输出格式输出共一行,包含 n 个整数,表示排好序的数列。数据范围1≤n≤100000输入样例:53 1 2 4 5输出样例:1 2 3 4 5思路归并中的 “归”归并排序实际上是运用分治法的一个问题,把一个大问题分为两个小问题,然后我们
2021-10-28 16:28:06
259
原创 C++题解 快速排序
题目描述给定你一个长度为 n 的整数数列。请你使用快速排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。输入格式输入共两行,第一行包含整数 n。第二行包含 n 个整数(所有整数均在 1∼109 范围内),表示整个数列。输出格式输出共一行,包含 n 个整数,表示排好序的数列。数据范围1≤n≤100000输入样例:53 1 2 4 5输出样例:1 2 3 4 5思路对于快速排序,我们选定一个基准数base,为了方便,可以取数组中间的数base = a[ l
2021-10-28 16:27:16
282
原创 C++题解 子矩阵的和
题目描述输入一个 n 行 m 列的整数矩阵,再输入 q 个询问,每个询问包含四个整数 x1,y1,x2,y2,表示一个子矩阵的左上角坐标和右下角坐标。对于每个询问输出子矩阵中所有数的和。输入格式第一行包含三个整数 n,m,q。接下来 n 行,每行包含 m 个整数,表示整数矩阵。接下来 q 行,每行包含四个整数 x1,y1,x2,y2,表示一组询问。输出格式共 q 行,每行输出一个询问的结果。数据范围1≤n,m≤1000,1≤n,m≤1000,1≤n,m≤1000,1≤q≤200000,
2021-10-28 16:26:31
851
原创 C++题解 第K个数
题目描述给定一个长度为 n 的整数数列,以及一个整数 k,请用快速选择算法求出数列从小到大排序后的第 k 个数。输入格式第一行包含两个整数 n 和 k。第二行包含 n 个整数(所有整数均在 1∼109 范围内),表示整数数列。输出格式输出一个整数,表示数列的第 k 小数。数据范围1≤n≤100000,1≤k≤n输入样例:5 32 4 1 5 3输出样例:3思考对于最快的排序算法,我们仍然需要O(nlogn)的时间进行完全排序,如果题目时间限制较紧,先排序后输出或许会导
2021-10-28 16:26:00
971
原创 C++题解 差分
差分差分是前缀和的逆运算,通过差分,我们可以实现O(1)的,对数列指定区间进行加减操作差分数组:首先给定一个·原数组a·:a[1], a[2], a[3],,,,,, a[n];然后我们构造一个·数组b· :b[1] ,b[2] , b[3],,,,,, b[i];使得 a[i] = b[1] + b[2 ]+ b[3] +,,,,,, + b[i]也就是说,a数组是b数组的前缀和数组,反过来我们把b数组叫做a数组的差分数组。换句话说,每一个a[i]都是b数组中从头开始的一段区间和。如何构造差
2021-10-28 16:25:23
334
原创 C++题解 前缀和
前缀和什么是前缀和原数组: a[1], a[2], a[3], a[4], a[5], …, a[n]前缀和 Si为数组的前 i项和前缀和: S[i] = a[1] + a[2] + a[3] + … + a[i]注意: 前缀和的下标一定要从 1开始, 避免进行下标的转换样例s[0] = 0s[1] = a[1]s[2] = a[1] + a[2]C++ 代码//// Created by Owwkmidream on 2021/10/27.//#include "iost
2021-10-28 16:23:16
468
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人